在本教程中,我们将学习如何使用比较操作符(==)和全等操作符(===)来比较PHP中的对象。
让我们创建一个新类来进行演示。
<?php
class
Point{
private
$x
;
$y
public
function
__construct(
,
){
$this
->x =
->y =
}
setX(
getX(){
return
->x;
setY(
getY(){
->y;
Point类有两个属性:$x坐标和$y坐标。
当我们使用比较运算符(==)比较对象时,如果两个对象是同一个类的实例,并且具有相同的属性和值,那么它们就是相等的。
让我们添加一个静态方法来比较两个Point的对象:
/**
* 比较两个点
* @param Point $p1
* @param Point $p2
* @return boolean 如果两个点相等,则返回true,否则返回false
*/
static
compare(
$p1
$p2
==
现在,我们创建两个具有相同属性值的新对象,并对它们进行比较:
=
new
Point(5,20);
if
(Point::compare(
)){
echo
'p1 和 p2 相等 <br/>'
else
{
'p1 和 p2 不等 <br/>'
输出:
p1 和 p2 相等
我们可以将$p2分配给一个新的引用$p3, $p2和$p3都指向同一个对象。
$p3
'p2 和 p3 相等 <br/>'
'p2 和 p3 不等 <br/>'
p2 和 p3 也是相等的。
现在我们可以用不同的属性值创建一个新的point对象,并将其与$p3进行比较:
$p4
Point(15,10);
'p3 和 p4 相等 <br/>'
'p3 和 p4 不等 <br/>'
p3 和 p4 不等
当您使用全等操作符比较对象时,当且仅当它们都引用同一个类实例时,它们才是相同的。
当我们使用全等操作符(===)进行比较时,下面的$p1和$p2对象是相同的,因为它们都引用同一个对象。
Point(10,35);
(
===
'$p1 和 $p2 全等'
'$p1 和 $p2 不全等'
$p1 和 $p2 全等
然而,下面的$p3对象并不等同于$p1,即使它们的属性值是相等的。
'$p1 和 $p3 全等'
'$p1 和 $p3 不全等'
$p1 和 $p3 不全等
原文链接:https://codingdict.com/