我有兩個對象變量在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