PHP: получение уникальных значений многомерного массива
Появилась необходимость удалить из многомерного PHP-массива все дубликаты. На ум сразу пришла функция array_unique
, которая отлично работает с одномерными массивами. Но применить её «в лоб» не вышло.
После курения манов и гугления яндексом родилось такое решение:
<?php $array = []; $array = array_map( 'unserialize', array_unique( array_map( 'serialize', $array ) )); ?>
Есть небольшие проблемы при отработке данного варианта, но это мелочи.
Народ также посоветовал мне использовать функцию array_unique
с аргументом SORT_REGULAR
, но это работает в PHP с версии 5.2.9.
Вот еще есть решение
&ly;?php
function unique_array_by_key($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
В норм виде все здесь http://regid.biz/php-unikalizirovat-massiv-po-klyuchu/
Тоже имеет право на жизнь
ictv, То что нужно было! Многомерный массив уникализирует в лёгкую.
Думаете стоит добавить в статью?
Да, стоит. Решение лучше, чем предложенное вами.