Php 多数组合并到具有键的新数组中

Php 多数组合并到具有键的新数组中,php,arrays,Php,Arrays,原始数组: $cat = Array ( [0] => Array ( [id] => 2 [name] => W [pid] => 1 ) [1] => Array ( [id] => 4 [name] => M [pid] => 1 ) [2] => Array ( [id] => 5 [name] => C [pid] => 1 ) [3] => Array ( [id]

原始数组:

$cat = Array ( 
    [0] => Array ( [id] => 2 [name] => W [pid] => 1 ) 
    [1] => Array ( [id] => 4 [name] => M [pid] => 1 ) 
    [2] => Array ( [id] => 5 [name] => C [pid] => 1 ) 
    [3] => Array ( [id] => 8 [name] => K [pid] => 7 ) 
    [4] => Array ( [id] => 9 [name] => B [pid] => 7 ) 
    [5] => Array ( [id] => 12 [name] => X [pid] => 11 )
)
我希望得到以下结果:

$cat = Array ( 
    [0] => Array (
        [pid]=>1,
        [item] => Array(
            [0] => Array ( [id] => 2 [name] => W ),
            [1] => Array ( [id] => 4 [name] => M ),
            [2] => Array ( [id] => 5 [name] => C )
        )
    ),
    [1] => Array (
        [pid]=>7,
        [item]=>Array(
            [0] => Array ( [id] => 8 [name] => K ),
            [0] => Array ( [id] => 9 [name] => B )
        )
    ),
    [2] => Array (
        [pid]=>11,
        [item]=>Array(
            [0] => Array ( [id] => 12 [name] => X )
        )
    )
)
怎么做?

$newCat=array();
数组_walk($cat,函数($v)使用(&$newCat){
$i=$v['pid'];
未结算($v['pid']);
如果(!isset($newCat[$i]))
$newCat[$i]=array('pid'=>$i,'item'=>array());
$newCat[$i]['item'][]=$v;
});
打印(数组值($newCat));

那么,您想用相同的
pid
合并所有项目吗?你试过什么了吗?我们喜欢在这里帮忙,但你需要展示你的努力。你被困在哪里?你需要帮助做什么?我们不会只为你做的。@meda:只要粘贴链接就行了。所以,我会为你链接它。请阅读工作的罚款!谢谢使者!