多维关联数组:如何查找具有相同值的数组?

时间:2017-12-11 08:28:34

标签: php arrays multidimensional-array

我目前正在寻找解决此问题的方法:

如果我有类似的东西:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Timer
        )

    [1] => Array
        (
            [id] => 2
            [name] => Tub
        )


    [3] => Array
        (
            [id] => 1
            [name] => Paper
        )

    [4] => Array
        (
            [id] => 4
            [name] => Puppy
        )        
)

我想要达到的目标是创建一个包含具有相同ID的数组的新数组。所以基本上,最后我会有两个数组:第一个将包含具有不同ID的元素,第二个将包含具有相同ID的元素。

任何提示?提前谢谢!

2 个答案:

答案 0 :(得分:1)

一种方法是主要使用array_filter()

// Gather ids and count
$id = array_count_values(array_column($array, 'id'));

// Filter not unique
$notUnique = array_filter($array, function($e) use ($id) {
    return ($id[$e['id']] > 1);
});

// Filter unique
$unique = array_filter($array, function($e) use ($id) {
    return !($id[$e['id']] > 1); // or ($id[$e['id']] == 1)
});

// Print result
print_r($notUnique);
echo '<br>';
print_r($unique);

答案 1 :(得分:0)

试试这个

<?php

    $array = array(
        array('id' => 1,'name' => 'Timer'),
        array('id' => 2,'name' => 'Tub'),
        array('id' => 1,'name' => 'Paper'),
        array('id' => 4,'name' => 'Puppy')
    );
    $new  = array();
    foreach($array as $r)$new[$r['id']][] = $r['name'];
    echo '<pre>';print_r($new);
?>

输出

Array
(
    [1] => Array
        (
            [0] => Timer
            [1] => Paper
        )

    [2] => Array
        (
            [0] => Tub
        )

    [4] => Array
        (
            [0] => Puppy
        )

)