Tôi có hai biến đối tượng trong PHP, hãy gọi cho chúng $a
và $b
. Tôi cho rằng chúng đều là cùng một đối tượng. Và, thực sự, một cuộc gọi đến số spl_object_hash()
xác nhận điều này, nhưng mỗi người có các đặc tính khác nhau.đối sánh spl_object_hash, đối tượng không giống nhau
Khi tôi chạy:
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";
}
tôi nhận được:
SAME HASH
DIFFERENT PRINT_R
NOT IDENTICAL
này đã khiến tôi bối rối. Khi nào thì cùng một đối tượng thực sự là hai đối tượng khác nhau?
Đây là 'var_dump' của cả hai băm. chuỗi (32) "0000000020d6b2fc000000007ad31222" chuỗi (32) "0000000020d6b2f0000000007ad31222" –
Tôi tự hỏi tại sao các băm giống hệt nhau. Có điều gì khiến những vật thể này trở nên đặc biệt không? Bạn có thể thêm định nghĩa của các đối tượng được đề cập và trạng thái của chúng không? – hakre
Và các biến đó đến từ đâu? Chúng ta có thể tái tạo nó, hoặc nó sẽ quá phức tạp? – HappyDeveloper