Как выводить только уникальные строки массива?

Есть вот такой вот массив (скобки лишние так как я его чуток обрезал)
rray ( [0] => Array ( [ID] => 108  [post_author] => 1 .....(Вырезанный кусок).... [state_id] => 0 [city] => [date_create] => 2014-10-21 14:53:26 [date_active] => 2014-10-21 14:53:48 [is_block] => 0 [layout] => layout_1 [about] => [per_page] => 10 [photo] => ) ) [1] => Array ( [ID] => 108  [post_author] => 1  .....(Вырезанный кусок).... [state_id] => 0 [city] => [date_create] => 2014-10-21 14:53:26 [date_active] => 2014-10-21 14:53:48 [is_block] => 0 [layout] => layout_1 [about] => [per_page] => 10 [photo] => ) ) )


Как видно id у обеих 108, вот как мне сделать, чтобы массив выводил только уникальные id, ну или уже в foreach, как сделать, чтобы так же выводились только уникальные id,

Например, если я получил массив с [ID] 108,108,109,109,111
в foreach обрабатывались они так 108,109,111 ?
  • Вопрос задан
  • 3073 просмотра
Пригласить эксперта
Ответы на вопрос 3
vmpartner
@vmpartner
In code we trust
array_unique — Убирает повторяющиеся значения из массива.
Лучше сразу ставить ID как ключ, тогда ничего не нужно будет делать и скрипт меньше съест памяти.
Пример:
$res1 = array("ID" => 1, "NAME" => "1");
$res2 = array("ID" => 1, "NAME" => "2");
$array[$res1["ID"]] = $res1;
$array[$res2["ID"]] = $res2;

В итоге в $array будет только $res2
Ответ написан
kascor
@kascor
Web-программист
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
$ids = array_unique(array_column($data, 'ID']);

Если нужно отфильтровать коллекцию

$data = array_values(array_reduce($data, function ($result, $item) {
    $result[$item['ID']] = $item;
    return $result;
}, []));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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