Удаление дублей из многомерного массива

Удаление дублей из многомерного массива

Задача: удаление дублей из многомерного массива.

Зачем это может нам понадобиться? К примеру мне это пригодилось в поисковике. Когда выводится один и тот же ответ на запрос несколько раз.

Функция array_unique нам не подходит, так как она работает только с одномерным массивом.

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

Код рабочий, проверен на практике.

Код

Сама функция выглядит так:

<?
function unique_multidim_array($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;
}
?>

А вот код для ее запуска (наше условие):

<?
$details = unique_multidim_array($details,'id');

//'id' <- Тут по какому критерию мы ищем повторы в многомерном массиве
//$details <- Тут многомерный массив, в котором мы ищем и в котором сразу записываем ответ на запрос
?>

'id' — Тут по какому критерию мы ищем повторы в многомерном массиве

$details — Тут многомерный массив, в котором мы ищем и в котором сразу записываем ответ на запрос

Заодно приведу вам пример многомерного массива:

Array
(
    [0] => Array
        (
            [value] => 30
            [description] => 30 секунд
        )

    [1] => Array
        (
            [value] => 45
            [description] => 45 секунд
        )

    [2] => Array
        (
            [value] => 60
            [description] => 1 минута
        )

    [3] => Array
        (
            [value] => 120
            [description] => 2 минуты
        )
)