<?php
class Car {
public $name = 'car';
/*public function __clone() {
$obj = new Car();
$obj->name = $this->name;
}
*/
}
$a = new Car();
$c = new Car();
$a->name = 'new car';
$b = clone $a;
if ($a == $b) echo '=='; //true 该行可输出
if ($a === $b) echo '==='; //$b 克隆的 $a 为啥他两个还不===
if ($a === $c) echo '==='; //这个我更理解不了了 应该这里会输出===吧大神们啊 这章真累 指点指点吧 谢谢了!
2 回答
已采纳
qq_青枣工作室_0
TA贡献446条经验 获得超754个赞
==和===都是表示相等!!!但是===要求更严格。
$a跟$b是两个对象,没有相同的引用,不会输出===
$a跟$c也是没有相同的引用,不会输出===。而且$c跟$a的属性name还不相同啦,就更加不相等啊!
附录:
在 PHP 4 中,对象比较的规则十分简单:如果两个对象是同一个类的实例,且它们有相同的属性和值,则这两个对象相等。类似的规则还适用与用全等符(===)对两个对象的比较。
PHP 5 中的对象比较要比 PHP 4 中复杂,所期望的结果更符合一个面向对象语言。
当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。
而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)
- 2 回答
- 0 关注
- 1426 浏览
添加回答
举报
0/150
提交
取消