<?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 關注
- 1465 瀏覽
添加回答
舉報
0/150
提交
取消