массив пересекается для объектного массива php

Я хочу знать как к array_intersect для объектного массива.

11
задан Brian Webster 5 October 2012 в 15:01
поделиться

3 ответа

array_intersect () возвращает массив, содержащий все значения array1, которые присутствуют во всех аргументах.

Тогда какое значение присутствует в этом контексте (именно эта функция), я нашел на php.net свой ответ:

Два элемента считаются равными, если и только если (string) $ elem1 === (строка) $ elem2. На словах: когда строковое представление совпадает с .

Тогда вы не сможете использовать его в массиве объектов, если ваши объекты не реализуют уникальное преобразование в строку.

2
ответ дан 3 December 2019 в 05:33
поделиться

Правильным способом проверки равенства двух объектов является использование ==. Поэтому:

array_uintersect($arr1, $arr2, function ($a1, $a2) { return $a1 == $a2; });
1
ответ дан 3 December 2019 в 05:33
поделиться

красивая функция toString уже реализована и называется сериализацией;) поэтому

array_map(
    'unserialize',
    array_intersect(
        array_map(
            'serialize',
            $obj1
        ), 
        array_map(
            'serialize', 
            $obj2
        )
    )
);

выполнит свою работу, пример, упомянутый выше, не работает, потому что array_intersect работает только со строками, как кто-то также упомянул

6
ответ дан 3 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: