Php 为什么要进行这种比较';s的输出为真
代码如下:Php 为什么要进行这种比较';s的输出为真,php,oop,Php,Oop,代码如下: class university { function hello($name){ return $this->name; } } function compare1(&$obj1 , $obj2){ if ($obj1 === $obj2) { return TRUE; }else { return FALSE; } } } $uni1 = new university(); $uni2 = new unive
class university {
function hello($name){
return $this->name;
}
}
function compare1(&$obj1 , $obj2){
if ($obj1 === $obj2) {
return TRUE;
}else {
return FALSE;
}
}
}
$uni1 = new university();
$uni2 = new university();
$uni3 = $uni1;
echo compare1($uni1 , $uni3) ?"SAME" : "DIFFERENT";
我想知道为什么输出是相同的,尽管compare函数按引用取第一个参数,按值取第二个参数,所以identity操作符必须给出FALSE。
如果我们试图做到这一点:
$uni3 = clone $uni1;
echo compare1($uni1 , $uni3) ?"SAME" : "DIFFERENT";
输出是不同的。
知道这两个例子是相等的,对吗
$uni3 = $uni1;
这里的值是通过引用传递的,所以在比较时,它们当然是同一个对象
$uni3 = clone $uni1;
这里你做了一个浅拷贝,所以引用是不同的,那么结果就不一样了