Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么要进行这种比较';s的输出为真_Php_Oop - Fatal编程技术网

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;
这里你做了一个浅拷贝,所以引用是不同的,那么结果就不一样了