在php多维数组中找到重复项并将它们放在一个新数组中

时间:2014-07-07 22:39:54

标签: php arrays

我有这样的数组。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [id] => 123
                    [name] => abc
                    [age] => 21

                )

            [1] => Array
                (
                   [id] => 456
                   [name] => abc
                   [age] => 25
                  )
             [2] => Array
                (
                   [id] => 789
                   [name] => ghi
                   [age] => 40
                  )
               )
             )

我想要做的是找到该数组中的任何重复名称并将其放在一个新数组中。所以最后我的数组必须是这样的。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [id] => 123
                    [name] => abc
                    [age] => 21

                )

             [1] => Array
                (
                   [id] => 789
                   [name] => ghi
                   [age] => 40
                  )
           )
     [1] => Array
        (
            [0] => Array
                (
                   [id] => 456
                   [name] => abc
                   [age] => 25

           )
         )

             )

我在如何做到这一点上挣扎。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

你可以使用一个简单的foreach,你可以将重复数组推送到下一个维度,如果它看到一个。例如:

$values = array(
    array(
        array('id' => 123, 'name' => 'abc', 'age', 21),
        array('id' => 456, 'name' => 'abc', 'age', 25),
        array('id' => 789, 'name' => 'ghi', 'age', 40),
    ),
);

foreach($values as $batch) {
    $temp = array();
    foreach($batch as $key => $value) {
        if(!isset($temp[$value['name']])) {
            $temp[$value['name']] = $value; // temporary storage
        } else {
            unset($batch[$key]);
            $values[][] = $value; // push it outside this batch
        }
    }
}

echo '<pre>';
print_r($values);