PHP数组中如何把字段名相同的组成一个数组?在线等。。。。

我想把字段p_id相同的变成一个多维数组,怎么处理?还是说在查询数据的时候就能进行处理吗?

Array
(

[0] => Array
    (
        [id] => 11
        [name] => 奥巴马
        [winning] => 5
        [title_honor] => 5
        [photo] => 
        [classid] => 10186
        [site_id] => 313
        [listorder] => 0
        [p_id] => 5
    )

[1] => Array
    (
        [id] => 10
        [name] => 习近
        [winning] => 三等奖
        [title_honor] => 荣誉科学
        [photo] => themes/313/userfiles/images/2016/12/6/source/8ops1ho3dm9i04u.jpg
        [classid] => 10186
        [site_id] => 313
        [listorder] => 0
        [p_id] => 6
    )

[2] => Array
    (
        [id] => 9
        [name] => 奥巴马
        [winning] => 二等
        [title_honor] => 2013年度同济大学医学院“特色导师”称号
        [photo] => themes/313/userfiles/images/2016/12/6/source/u0g8xhd1gzphkpf.jpg
        [classid] => 10186
        [site_id] => 313
        [listorder] => 0
        [p_id] => 5
    )

[3] => Array
    (
        [id] => 8
        [name] => 奥巴马
        [winning] => 一等奖
        [title_honor] => 先锋队
        [photo] => themes/313/userfiles/images/2016/12/6/source/qtqukvv4birtkdc.jpg
        [classid] => 10186
        [site_id] => 313
        [listorder] => 0
        [p_id] => 5
    )

)

阅读 4.9k
3 个回答
$arr = [....]; //你上面的数组
$newArr = [];
foreach ($arr as $item) {
    $newArr[$item['p_id']][] = $item;
}
print_r($newArr);

用array_column就可以了

array_column 才是最佳选择
<?php
// 表示由数据库返回的可能记录集的数组
$a = array(
array(

'id' => 5698,
'first_name' => 'Bill',
'last_name' => 'Gates',

),
array(

'id' => 4767,
'first_name' => 'Steve',
'last_name' => 'Jobs',

)
array(

'id' => 3809,
'first_name' => 'Mark',
'last_name' => 'Zuckerberg',

)
);

$last_names = array_column($a, 'last_name');
print_r($last_names);
?>
输出:
Array
(
[0] => Gates
[1] => Jobs
[2] => Zuckerberg
)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题