Уникальные объекты с array_unique
В PHP функция array_unique помогает исключить повторяющиеся значения из массива. Однако при работе с массивами, содержащими объекты, эта функция может работать не так, как ожидалось.
Введите решение:
Для массивов объектов вы можете использовать array_unique с флагом сравнения SORT_REGULAR. Этот флаг предписывает функции сравнивать объекты по их свойствам, а не по ссылкам на них.
Реализация:
Рассмотрим массив объектов Role:
class Role {
public $name;
}
$foo = new Role();
$foo->name = 'test1';
$bar = $foo;
$bam = new Role();
$bam->name = 'test2';
$test = array($foo, $bar, $bam);
Чтобы удалить дубликаты с помощью array_unique:
print_r(array_unique($test, SORT_REGULAR));
Вывод:
Array ( [0] => Role Object ( [name] => test1 ) [2] => Role Object ( [name] => test2 ) )
Внимание:
Важно отметить, что array_unique с SORT_REGULAR использует сравнение "==", а не строгое сравнение ("==="). Это означает, что объекты с одинаковыми свойствами, но разными ссылками на объекты по-прежнему будут считаться дубликатами.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3