spl_object_hash匹配,对象不相同 [英] spl_object_hash matches, objects not identical

查看:102
本文介绍了spl_object_hash匹配,对象不相同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在PHP中有两个对象变量,我们称它们为$a$b.我认为它们都是同一个对象.而且,确实,对spl_object_hash()的调用确认了这一点,但是它们各自具有不同的属性.

I have two object variables in PHP, let's call them $a and $b. I assume they're both the same object. And, indeed, a call to spl_object_hash() confirms this, but they each have different properties.

当我跑步时:

if(spl_object_hash($a) === spl_object_hash($b)){
    echo "SAME HASH\n";
}else{
    echo "DIFFERENT HASH\n";
}

if(print_r($a,TRUE) === print_r($b,TRUE)){
    echo "SAME PRINT_R\n";
}else{
    echo "DIFFERENT PRINT_R\n";
}

if($a === $b){
        echo "IDENTICAL";
    }else{
        echo "NOT IDENTICAL";
    }

我得到:

SAME HASH
DIFFERENT PRINT_R
NOT IDENTICAL

这让我感到困惑.同一对象何时实际上是两个不同的对象?

This has got me baffled. When is the same object actually two different objects?

推荐答案

相同的对象和具有相同的属性之间是有区别的.

There is a difference between being the same object, and having the same properties.

$a = new stdClass("same", "parameters", 1337);
$b = new stdClass("same", "parameters", 1337);

var_dump($a == $b); //True
var_dump($a === $b); //False!

$b = $a;

var_dump($a === $b); //Now true.

这篇关于spl_object_hash匹配,对象不相同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆