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

I'm currently looking for a solution to this problem:

if I have something like that:

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
        )        
)

The goal I'd like to reach here is create a new array which contains the arrays with the same ID. So basically, at the end I'm gonna have two arrays: the first will contain element with different IDs and the second will contain element with the same ID.

Any tips? Thank you in advance!

Try this

<?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);
?>

Output

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

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

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

)

One way is by mainly using 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);