首頁  >  文章  >  後端開發  >  php物件導向之物件比較用法詳解

php物件導向之物件比較用法詳解

巴扎黑
巴扎黑原創
2017-04-17 14:38:491643瀏覽

透過克隆,我們可以明白$a = $b和$a = clone $b所表示的意思了。但在實際應用中,我們還是需要判斷兩個物件之間的關係是複製還是引用,這是可以使用比較運算子「==」和「===」。

運算子「==」和「===」

當使用比較運算子(==)比較兩個物件變數時,比較的原則是:如果兩個物件的屬性個屬性值都相等,而且兩個物件是同一個類別的實例,那麼這兩個物件變數相等;

#而如果使用全等運算子(===),這兩個物件變數一定要指向某各類別的同一個實例(即同一個物件)。

下面我們看個實例:

<?php
header("content-type:text/html;charset=utf-8");
class Dog{
public $type;
public $age;
function __construct($type,$age)
{
$this->type = $type;
$this->age = $age;
}
}
$dog1 = new Dog(&#39;二哈&#39;,&#39;2&#39;);
$dog2 = new Dog(&#39;二哈&#39;,&#39;2&#39;);
if($dog1 == $dog2){
echo &#39;<br/> $dog1 == $dog2&#39;;
}
if($dog1 === $dog2){
echo &#39;<br/>$dog1 === $dog2 &#39;;
}else{
echo &#39;<br/>他们不能全等&#39;;
}
echo &#39;<hr/>&#39;;
$dog3 = $dog1;
if($dog1 == $dog3){
echo &#39;<br/> $dog1 == $dog3&#39;;
}
if($dog1 === $dog3){
echo &#39;<br/>$dog1 === $dog3 &#39;;
}else{
echo &#39;<br/>他们不能全等&#39;;
}

實例解析:

首先我們建立了一個狗類,在類別中定義屬性種類和年齡,建立構造函數。接著實例化兩個一模一樣類,$dog1和$dog2。然後把這兩個實例化的類別做比較。首先用比較運算子「==」。上面我們說到過這個符號的意思:當使用比較運算子(==)比較兩個物件變數時,比較的原則是:如果兩個物件的屬性個屬性值都相等,而兩個物件是同一個類別的實例,那麼這兩個物件變數相等。首先判斷,$dog1和$dog2的屬性和屬性值都是相等的,其次他兩個都是同一個類別Dog的類別的實例化結果,那麼結果就是,$dog1==$dog2。但接下來的判斷$dog1===$dog2這個相等嗎?我們看下運算子「===」成立的條件:而如果使用全等運算子(===),這兩個物件變數一定要指向某各類別的同一個實例(即同一個物件)。只有當運算子「===」兩邊比較的值是同一個物件的時候,才能成立。 $dog1和$dog2是兩個實例,不是同一個,所以他們「===」不能成立。我們給個條件,$dog3 = $dog1,用同樣的方法去進行對象的比較和判斷,看看是否成立。

大家可以講上述的實例運行查看結果。

以上是php物件導向之物件比較用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn