为了账号安全,请及时绑定邮箱和手机立即绑定

===到底该怎么理解

===到底该怎么理解

PHP
spython 2016-04-25 17:51:16
<?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 中复杂,所期望的结果更符合一个面向对象语言。

当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。

而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)

查看完整回答
反对 回复 2016-04-25
?
little_newbee

TA贡献21条经验 获得超7个赞

==表示数值一样就可以,===称为全等,要求更为严格,要对象都是同一个,简单地说就是俩个是一个东西。

查看完整回答
反对 回复 2016-04-25
  • 2 回答
  • 0 关注
  • 1410 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信