PHP面向对象-对象的比较(一)

2023-04-28 09:10:29 浏览数 (1)

在 PHP 中,可以使用 == 和 === 运算符来比较对象。这两个运算符之间的区别在于它们的比较方式不同。使用 == 运算符比较两个对象时,比较的是对象的属性值。如果两个对象的属性值相同,则返回 true,否则返回 false。例如:

代码语言:javascript复制
class Person {
  public $name;
  public $age;
}

$person1 = new Person();
$person1->name = "Alice";
$person1->age = 30;

$person2 = new Person();
$person2->name = "Alice";
$person2->age = 30;

if ($person1 == $person2) {
  echo "Objects are equal";
} else {
  echo "Objects are not equal";
}

在这个例子中,我们创建了两个 Person 对象,它们的属性值相同。使用 == 运算符比较这两个对象时,将返回 true。

如果要比较对象的引用,可以使用 === 运算符。当使用 === 运算符比较两个对象时,比较的是对象的引用。如果两个对象的引用相同,则返回 true,否则返回 false。例如:

代码语言:javascript复制
class Person {
  public $name;
  public $age;
}

$person1 = new Person();
$person1->name = "Alice";
$person1->age = 30;

$person2 = $person1;

if ($person1 === $person2) {
  echo "Objects are equal";
} else {
  echo "Objects are not equal";
}

在这个例子中,我们将 $person2 变量设置为 $person1 的引用。使用 === 运算符比较这两个对象时,将返回 true。

另外,在 PHP 中还有一个专门用于比较对象的函数叫做 strcmp。strcmp 函数可以比较两个对象,并根据对象的属性值返回一个整数值。如果第一个对象比第二个对象小,则返回负数;如果第一个对象比第二个对象大,则返回正数;如果两个对象相等,则返回 0。例如:

代码语言:javascript复制
class Person {
  public $name;
  public $age;
}

$person1 = new Person();
$person1->name = "Alice";
$person1->age = 30;

$person2 = new Person();
$person2->name = "Bob";
$person2->age = 40;

$result = strcmp($person1->name, $person2->name);

if ($result == 0) {
  echo "Names are equal";
} else if ($result < 0) {
  echo "Name of person 1 is smaller";
} else {
  echo "Name of person 1 is larger";
}

在这个例子中,我们使用 strcmp 函数比较了两个对象的 name 属性。由于$person1 对象的 name 属性的值为 "Alice",$person2 对象的 name 属性的值为 "Bob",因此 strcmp 函数返回一个负数,表示 $person1 对象的 name 属性值小于 $person2 对象的 name 属性值。

php

0 人点赞