我有两个对象变量在PHP中,我们姑且称之为$a
和$b
。我假设他们都是同一个对象。而且,事实上,到spl_object_hash()
打电话证实了这一点,但他们每个人都有不同的属性。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
这让我百思不得其解。同一个对象何时实际上是两个不同的对象?
这里是两个散列的'var_dump'。 string(32)“0000000020d6b2fc000000007ad31222” string(32)“0000000020d6b2f0000000007ad31222” –
我不知道为什么哈希值是相同的。有什么能够使这些物体变得特别吗?你可以添加对象的定义和它们的状态吗? – hakre
这些变量来自哪里?我们可以重现它,还是会太复杂? – HappyDeveloper