Страницы

Поиск по вопросам

понедельник, 1 апреля 2019 г.

Удалить похожие объекты?

Массив: $objects = array( (object)array('name'=>'Stiven','age'=>25,'variant'=>(object)array('surname'=>'Sigal')), (object)array('name'=>'Michael','age'=>30,'variant'=>(object)array('surname'=>'Jackson')), (object)array('name'=>'Brad','age'=>35,'variant'=>(object)array('surname'=>'Pit')), (object)array('name'=>'Jolie','age'=>35,'variant'=>(object)array('surname'=>'Pit')), ); echo "

";
print_r($objects);

Как удалить объекты, которые имеют одинаковые variant->surname и age? Точнее не удалить, а оставить один из них, т.е. чтобы таких одинаковых элементов не было в массиве.    


Ответ

отсортировать с помощью ф-ии usort() и собственной ф-ии, сравнивающей по полям variant->surname и age. Тогда объекты с одинаковыми значениями точно будут подряд; пробежаться array_filter() и ф-ей, сохраняющей статически предыдущие значения variant->surname и age, с тем, чтобы вернуть true только, если значения изменились. Upd. для ленивых: работающий пример

Комментариев нет:

Отправить комментарий