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字串
- JavaScript 與 Java、PHP 的比較JavaScriptPHP
- PHP中的比較運算子PHP
- js物件陣列Date的比較JS物件陣列
- php型別比較表PHP型別
- PHP 7 vs HHVM 比較PHP
- PHP的的陣列和比較符PHP陣列
- javascript訪問不同物件的速度比較JavaScript物件
- 四種在Javascript比較物件的方法JavaScript物件
- TC中如何新增物件及比較物件物件
- php比較運算子的安全問題PHP
- IIS下PHP的ISAPI和FastCGI比較PHPAPIAST
- 國外主流PHP框架比較PHP框架
- Python小知識之物件的比較Python物件
- Java物件之間的比較之equals和==Java物件
- PHP比較運算子的詳細學習PHP
- IIS下PHP的三種配置方式比較PHP
- PHP autoload與include效能比較PHP
- 比較適用的js日期物件定義方式JS物件
- 從原理分析Swift的switch怎麼比較物件Swift物件
- 使用頻率比較高的PHP函式方法PHP函式
- php,asp,jsp,c,速度比較 (轉)PHPJS
- 物件導向與函式程式設計的比較物件函式程式設計
- 關於資料庫物件版本比較的指令碼資料庫物件指令碼
- PHP容易出錯之二:PHP中的數字與字串比較PHP字串
- ***PHP陣列排序+php二維陣列排序方法(PHP比較器)PHP陣列排序
- Zope的優點和Apache+PHP+MySQL的比較(轉)ApachePHPMySql
- Python解惑:整數比較 is ==的比較Python
- php版本比較函式version_compare()PHP函式
- PHP基礎教程-18 比較操作符PHP
- JS 物件合併與克隆方法的分類與比較JS物件
- C# 物件比較(值型別、引用型別)C#物件型別
- php關於金額比較引發的問題(轉)PHP
- data (){..} 返回一個物件或者不返回物件,兩種寫法的差異比較物件
- PHP file_get_contents 與 curl 效能比較PHP
- js 深比較和淺比較JS
- Js 比較兩個物件的鍵名與鍵值是否相等JS物件
- 物件包裝器類之間的比較用equals()而不是==物件