Удалите повторяющиеся элементы из многомерного массива в php - PullRequest
0 голосов
/ 23 июля 2010

Hay, ребята, у меня есть массив, содержащий эти данные

Array
    (
    [id] => Array
        (
            [0] => 1
            [1] => 10
            [2] => 4
        )

    [age] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 2
        )
)

Теперь я хочу удалить дубликаты из ['age'] и оставить первый в такте.

Так что это вернет

Array
    (
    [id] => Array
        (
            [0] => 1
            [2] => 4
        )

    [age] => Array
        (
            [0] => 1
            [2] => 2
        ) 
)

Есть идеи? Или уже есть функция для этого?

Ответы [ 3 ]

1 голос
/ 23 июля 2010

Как сказал Гордон, для создания отношений вам понадобится пользовательская функция, но вы можете использовать http://php.net/manual/en/function.array-unique.php?

Не лучше ли иметь ключи массива ageсоответствующие значения массива id?

0 голосов
/ 23 июля 2010

Вы можете попробовать это

$array = array('id' => array(1,10,4), 'age'=>array(1,1,2));
$age_array = array();
foreach ($array['age'] as $key => $val) {
  if (in_array($val, $age_array))
    unset($array['id'][$key], $array['age'][$key]);
  $age_array[] = $val;
}
print_r($array);

это возвращает Array ( [id] => Array ( [0] => 1 [2] => 4 ) [age] => Array ( [0] => 1 [2] => 2 ) )

С уважением Люк

0 голосов
/ 23 июля 2010
<?php

$array = array(
    'id' => array(0 => 1, 1 => 10, 3 => 4),
    'age' => array(0 => 1, 1 => 1, 2 => 2)
);  

array_walk($array, 'dupe_killer');

print_r($array);

function dupe_killer(&$value, $key)
{
    $value = array_unique($value);
}

?>
...