PHP为对象比较提供了一种非常好的方法.
class People {
public $name;
}
$p0 = new People();
$p1 = new People();
$p0->name = 'ali';
$p1->name = 'ali';
// equal
if ($p0 == $p1) {
echo 'equal' . "\n";
} else {
echo 'diff' . "\n";
}
Run Code Online (Sandbox Code Playgroud)
但是,有时候,我想在比较期间忽略一些班级成员.
class People {
public $id;
public $name;
}
$p0 = new People();
$p1 = new People();
$p0->id = 0; // Can we ignore this id during == comparison?
$p1->id = 1; // Can we ignore this id during == comparison?
$p0->name = 'ali';
$p1->name = 'ali';
// diff. As $p0->id != $p1->id. How can we ignore id during == comparison?
if ($p0 == $p1) {
echo 'equal' . "\n";
} else {
echo 'diff' . "\n";
}
Run Code Online (Sandbox Code Playgroud)
如果我有任何方法要求==操作员忽略选定的班级成员?
你不能在PHP中重载运算符.有一个PECL扩展允许它,但是为对象提供一个equals()方法然后通过它进行比较更容易(也更便于移植),例如
class People
…
public function equals(People $people)
{
return $this->name === $people->name;
}
}
Run Code Online (Sandbox Code Playgroud)