類與物件(PHP5)之十三:物件比較(Comparing objects)

日期:2006-09-26  作者:喜騰小二  來源:PHPChina


在PHP5中,物件的比較比PHP4中的更復雜和更協調的期望的一個麵嚮物件語言(倒不是說PHP5是這樣的一門語言)。當使用比較運運算元(==),物件變數以一種簡單的方式被比較。也就是:如果它們俱有相同的內容和值,兩個物件的實例是相等,並且是同一個類的實例。
另一方麵,當使用恆等式運運算元(===)時,物件變數當且僅當它們引用同一個類的同一個實例時是相同的
一個例子就可以闡明這些規則
例子
19-31.PHP5中的物件比較實例
PHP程式碼如下:

php
function bool2str($bool)
{    if (
$bool===false) {  return 'FALSE';  } 
else {  return 
'TRUE';  }
}
function 
compareObjects(&$o1, &$o2)
{   echo 
'o1 == o2 : 'bool2str($o1 == $o2) . "
"
;
    echo 
'o1 != o2 : ' bool2str($o1 != $o2) . "
"
;
    echo 
'o1 === o2 : ' bool2str($o1 === $o2) . "
"
;
    echo 
'o1 !== o2 : ' bool2str($o1 !== $o2) . "
"
;
}
class 
Flag
{   public $flag;
    function 
Flag($flag true) {  $this->flag $flag;  }
}
class 
OtherFlag
{   public $flag;
    function 
OtherFlag($flag true) {  $this->flag $flag;  }
}
$o = new Flag();
$p = new Flag();
$q $o;
$r = new OtherFlag();
echo 
"Two instances of the same class
"
;
compareObjects($o$p);
echo 
"
Two references to the same instance
"
;
compareObjects($o$q);
echo 
"
Instances of two different classes
"
;
compareObjects($o$r);
?> 


上例將輸出:

[Copy to clipboard]CODE:
Two instances of the same class
o1 == o2 :
TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE
Two
references to the same instance
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 ===
o2 : TRUE
o1 !== o2 : FALSE
Instances of two different classes
o1 == o2
: FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 :
TRUE

<<<返回技術中心

技術文章

站內新聞

我要啦免费统计