PHP物件的比較
物件比較:
相等:當使用比較運算子(==)比較兩個物件變數時,比較的原則是:
1.如果兩個物件的屬性和屬性值 都相等,
2.而且兩個物件是同一個類的例項(instance of),那麼這兩個物件變數相等。
全等:而如果使用全等運算子(===),這兩個物件變數一定要指向某個類的同一個例項(即同一個物件,說明物件標誌符都完全一樣)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
class Sheep
{ public $name ;
protected $food ;
public function __construct(string $name , string $food )
{
$this ->name = $name ;
$this ->food = $food ;
}
public function __toString()
{
return serialize( $this );
}
public function __clone()
{
echo `物件被克隆` . PHP_EOL;
}
} $sheep1 = new Sheep( `喜洋洋` , `肉` ); //PHP Recoverable fatal error: Object of class Sheep could not be converted to string
echo $sheep1 ;
/** *
*
* 相等:當使用比較運算子(==)比較兩個物件變數時,比較的原則是:如果兩個物件的屬性和屬性值 都相等,
* 而且兩個物件是同一個類的例項,那麼這兩個物件變數相等。
*
* 全等:而如果使用全等運算子(===),這兩個物件變數一定要指向某個類的同一個例項(即同一個物件)。
*
*/
$sheep1 = new Sheep( `喜洋洋` , `肉` );
$sheep2 = new Sheep( `喜洋洋` , `肉` );
$sheep3 = clone $sheep1 ;
//分析:三個物件都是Sheep類的例項,且物件的屬性和值都完全一樣 if ( $sheep1 == $sheep2 && $sheep2 == $sheep3 ) {
echo `$sheep1 == $sheep2 == $sheep3` . PHP_EOL;
} $sheep4 = $sheep1 ; //物件的引用傳遞(傳遞的是物件識別符號)
if ( $sheep4 === $sheep1 ) {
echo `$sheep4 === $sheep1` . PHP_EOL;
} |
本文轉自 hgditren 51CTO部落格,原文連結:http://blog.51cto.com/phpme/2051559,如需轉載請自行聯絡原作者
相關文章
- PHP比較字串PHP字串
- js物件陣列Date的比較JS物件陣列
- js物件如何深比較?JS物件
- php型別比較表PHP型別
- javascript訪問不同物件的速度比較JavaScript物件
- 四種在Javascript比較物件的方法JavaScript物件
- Python小知識之物件的比較Python物件
- php比較運算子的安全問題PHP
- 比較適用的js日期物件定義方式JS物件
- PHP file_get_contents 與 curl 效能比較PHP
- JS 物件合併與克隆方法的分類與比較JS物件
- data (){..} 返回一個物件或者不返回物件,兩種寫法的差異比較物件
- Python 與 PHP:2024 年程式設計前景比較PythonPHP程式設計
- Js 比較兩個物件的鍵名與鍵值是否相等JS物件
- Integer的比較
- 126 PHP目前比較常見的五大執行模式PHP模式
- js 深比較和淺比較JS
- Go和Python比較的話,哪個比較好?GoPython
- 比較兩個List物件,找出新增、刪除、更改的條目物件
- 比較兩個物件是否相同,輸出不同的屬性值(一)物件
- PHP基礎-資料型別-string和int比較PHP資料型別
- 集合類的比較
- PHP 5.6,7.0,7.1,7.2 和 HHVM 執行效率比較PHP
- Oracle date 型別比較和String比較Oracle型別
- 比較集合
- Integer比較
- 效能比較
- 字串比較字串
- HashSet與HashMap比較——新增物件已存在處理方式一樣?HashMap物件
- 比較典的莫比烏斯反演
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- 比較重要的例題
- ==和equals方法的比較
- volatile與Atomic的比較
- 浮點數的比較
- Java的BigDecimal比較大小JavaDecimal
- BootStrap, React, Vue的比較bootReactVue
- iOS 版本號的比較iOS