首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Comparing Objects

When using the comparison operator (==), object variables are compared in a simple manner, namely: Two object instances are equal if they have the same attributes and values (values are compared with ==), and are instances of the same class.

When using the identity operator (===), object variables are identical if and only if they refer to the same instance of the same class.

An example will clarify these rules.

Example #1 Example of object comparison in PHP 5

代码语言:javascript
复制
<?php
function?bool2str($bool)
{
????if?($bool?===?false)?{
????????return?'FALSE';
????}?else?{
????????return?'TRUE';
????}
}

function?compareObjects(&$o1,?&$o2)
{
????echo?'o1?==?o2?:?'?.?bool2str($o1?==?$o2)?.?"\n";
????echo?'o1?!=?o2?:?'?.?bool2str($o1?!=?$o2)?.?"\n";
????echo?'o1?===?o2?:?'?.?bool2str($o1?===?$o2)?.?"\n";
????echo?'o1?!==?o2?:?'?.?bool2str($o1?!==?$o2)?.?"\n";
}

class?Flag
{
????public?$flag;

????function?__construct($flag?=?true)?{
????????$this->flag?=?$flag;
????}
}

class?OtherFlag
{
????public?$flag;

????function?__construct($flag?=?true)?{
????????$this->flag?=?$flag;
????}
}

$o?=?new?Flag();
$p?=?new?Flag();
$q?=?$o;
$r?=?new?OtherFlag();

echo?"Two?instances?of?the?same?class\n";
compareObjects($o,?$p);

echo?"\nTwo?references?to?the?same?instance\n";
compareObjects($o,?$q);

echo?"\nInstances?of?two?different?classes\n";
compareObjects($o,?$r);
?>

The above example will output:

代码语言:javascript
复制
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

Note: Extensions can define own rules for their objects comparison (==).

← Object Cloning

Type Hinting →

代码语言:txt
复制
 ? 1997–2017 The PHP Documentation Group

Licensed under the Creative Commons Attribution License v3.0 or later.

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com