PHP in_array对象比较?

php
2022-08-30 15:12:10

该函数可以比较对象吗?in_array

例如,我有一个对象数组,我想将它们清楚地添加到另一个数组中。是否可以检查是否已添加对象,如下所示:

in_array($distinct, $object);

还是有其他方法?


答案 1

您可以使用严格比较:

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); //

答案 2

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;
    }
}

推荐