php - spl_object_hash 匹配,对象不相同

标签 php oop

我在 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/

相关文章:

php - 匹配mysql中值数组中的一个值

php - 从回显的 php 传递数据

php - Laravel - 路由到 "views"内的文件夹

c# - IoC 预期接口(interface)的命名约定

arrays - 在 Smalltalk 中读取数组中的字符串并将其转换为数组

header 后 PHP session 被销毁/丢失

php - android 发送值到 php(mysql_fetch_array() 期望参数 1 是资源,数组中给出)

java - System.exit(0) 不起作用和面向对象的设计。

带有 jQ​​uery 的 JavaScript OOP

c# - 同一类型对象中的对象列表?