===到底该怎么理解

<?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 '==='; //这个我更理解不了了 应该这里会输出===吧

大神们啊 这章真累 指点指点吧 谢谢了!

spython
浏览 1427回答 2
2回答

qq_青枣工作室_0

==和===都是表示相等!!!但是===要求更严格。$a跟$b是两个对象,没有相同的引用,不会输出===$a跟$c也是没有相同的引用,不会输出===。而且$c跟$a的属性name还不相同啦,就更加不相等啊!附录:在 PHP 4 中,对象比较的规则十分简单:如果两个对象是同一个类的实例,且它们有相同的属性和值,则这两个对象相等。类似的规则还适用与用全等符(===)对两个对象的比较。PHP 5 中的对象比较要比 PHP 4 中复杂,所期望的结果更符合一个面向对象语言。当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)

little_newbee

==表示数值一样就可以,===称为全等,要求更为严格,要对象都是同一个,简单地说就是俩个是一个东西。
打开App,查看更多内容
随时随地看视频慕课网APP