Я хочу знать как к array_intersect для объектного массива.
array_intersect ()
возвращает массив, содержащий все значения array1, которые присутствуют во всех аргументах.
Тогда какое значение присутствует в этом контексте (именно эта функция), я нашел на php.net свой ответ:
Тогда вы не сможете использовать его в массиве объектов, если ваши объекты не реализуют уникальное преобразование в строку.
Правильным способом проверки равенства двух объектов является использование ==
. Поэтому:
array_uintersect($arr1, $arr2, function ($a1, $a2) { return $a1 == $a2; });
красивая функция toString уже реализована и называется сериализацией;) поэтому
array_map(
'unserialize',
array_intersect(
array_map(
'serialize',
$obj1
),
array_map(
'serialize',
$obj2
)
)
);
выполнит свою работу, пример, упомянутый выше, не работает, потому что array_intersect работает только со строками, как кто-то также упомянул