我在 PHP 中有两个对象变量,我们称它们为 $a
和 $b
。我假设它们都是同一个对象。事实上,对 spl_object_hash()
的调用证实了这一点,但它们各自具有不同的属性。
当我运行时:
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
这让我很困惑。什么时候同一个对象实际上是两个不同的对象?
最佳答案
同一对象和具有相同属性之间存在差异。
$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.
关于php - spl_object_hash 匹配,对象不相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053471/