Существует более быстрый способ, если вы хотите преждевременно оптимизировать.
<?php
$arr = array();
foreach ($data->events as $address) {
$arr[$address->getAddressString()] = 'a'; // value doesn't matter
// using inherent uniqueness of keys.
}
// $addrs = array_keys($arr);
// optionally, take all those array keys and put them in values.
// keys would become regular numeric keys
?>
Это должно работать быстрее, чем любые другие ответы здесь. Но это будет иметь значение, если вы имеете дело с большими объемами данных.
Если вы хотите эхо, вам нужно будет сделать array_keys
, если вы не выше. Здесь он находится в одной строке:
echo implode(', ',array_keys($arr)); // comma separated list of unique values
Или это для сортировки:
$addrs = array_keys($arr);
sort($addrs);
echo implode(', ',$addrs); // sorted list
Наконец, я хотел бы добавить, что вы должны получать уникальные, упорядочивания результатов от вашей модели данных в первую очередь. База данных намного быстрее и эффективнее в простых задачах, таких как заказ уникальных результатов, чем когда-либо будет ваш PHP-код.
SELECT DISTINCT `address` FROM `table`
WHERE `city` LIKE 'Lodi'
ORDER BY 'address' ASC
Dont выбрать дубликаты в 1-е место - как вы запросов к базе данных – Steve
Это код, который я унаследовал, он не получил документацию и довольно спагетти, как, я бы с удовольствием изменить, как запрашивается база данных, но из-за времени с ограничениями в минуту важно, чтобы я просто получил эту работу. Он смотрит на модель события и переходит к отношениям public function getAddressString() { возвращает $ this-> место-> address-> имя_создания. ','. $ this-> location-> address-> street_name. ','. $ this-> место-> адрес-> город. ','. $ This-> venue-> адресно> post_code; } Я не уверен, как еще данные выводятся, но я знаю, что функция используется в другом месте. – DevAL