Время для прочтения: 0 мин. 25 сек.

PHP: получение уникальных значений многомерного массива

Появилась необходимость удалить из многомерного PHP-массива все дубликаты. На ум сразу пришла функция array_unique, которая отлично работает с одномерными массивами. Но применить её "в лоб" не вышло.

После курения манов и гугления яндексом родилось такое решение:


<?php
$array = [];
$array = array_map( 'unserialize', array_unique( 
    array_map( 'serialize', $array )
));
?>

Есть небольшие проблемы при отработке данного варианта, но это мелочи.

Народ также посоветовал мне использовать функцию array_unique с аргументом SORT_REGULAR, но это работает в PHP с версии 5.2.9.

RTFM

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

  • ictv

    Вот еще есть решение


    &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/

    • Тоже имеет право на жизнь