PHP in_array对象比较?
2022-08-30 15:12:10
该函数可以比较对象吗?in_array
例如,我有一个对象数组,我想将它们清楚地添加到另一个数组中。是否可以检查是否已添加对象,如下所示:
in_array($distinct, $object);
还是有其他方法?
该函数可以比较对象吗?in_array
例如,我有一个对象数组,我想将它们清楚地添加到另一个数组中。是否可以检查是否已添加对象,如下所示:
in_array($distinct, $object);
还是有其他方法?
您可以使用严格比较:
in_array($object, $array, TRUE);
用法示例:
$a = new stdClass();
$a->x = 42;
$b = new stdClass();
$b->y = 42;
$c = new stdClass();
$c->x = 42;
$array = array($a,$b);
echo in_array($a, $array, true); // 1
echo in_array($b, $array, true); // 1
echo in_array($c, $array, true); //
in_array函数无法比较对象。
您应该从对象创建唯一的键值对,并且只需要在将新对象插入最终数组时比较这些键。
假设每个对象都有一个唯一的属性,一个可能的解决方案是:id
$unique_objects = array();
// $data represents your object collection
foreach ($data as $item) {
if (!array_key_exists($item->id, $unique_objects)) {
$unique_objects[$item->id] = $obj;
}
}