$user = array(
0 => array(
'sid' => 1,
'name' => '张三',
'email' => '[email protected]',
),
1 => array(
'sid' => 2,
'name' => '李四',
'email' => '[email protected]',
),
2 => array(
'sid' => 5,
'name' => '王五',
'email' => '[email protected]',
),
3 => array(
'sid' => 2,
'name' => '秦王',
'email' => '[email protected]',
)
);
如果不用 foreach 循环,还有什么更好的办法吗 最后的效果想得到如下
$result = array(
1 => array(
array(
'sd' => 1,
'name' => '张三',
'email' => '[email protected]',
)
),
2 => array(
array(
'sid' => 2,
'name' => '李四',
'email' => '[email protected]',
),
array(
'sid' => 2,
'name' => '秦王',
'email' => '[email protected]',
)
),
5 => array(
array(
'sid' => 5,
'name' => '王五',
'email' => '[email protected]',
)
),
);
1
VgV 2021-03-10 19:50:41 +08:00
array_merge_recursive
|
2
Sunyanzi 2021-03-10 22:13:53 +08:00
楼上的答案是错的 ... array_merge_recursive 和这个需求完全不沾边 ...
以及没有更好的办法 ... foreach 其实是最高效且易懂的解决方案 ... 但如果你坚持非要写得花一点的话 ... 我第一反应是用 array_reduce ... 如下 ... i.imgur.com/hwdkjwY.png |
3
renmu123 2021-03-11 09:06:58 +08:00 via Android
你搜搜看 php groupby 有什么花的写法
|
4
dvaknheo 2021-03-13 13:22:01 +08:00
array_column
array array_column( array $input, mixed $column_key[, mixed $index_key = null] ) column_key 也可以是 NULL,此时将返回整个数组(配合 index_key 参数来重置数组键的时候,非常管用) |
5
crynocry 2021-03-14 08:32:59 +08:00
4L 的答案是错的。array_column 只会整理出一维数组。
|
6
crynocry 2021-03-14 08:34:19 +08:00
接上条 刚刚看了 Laravel groupBy 的源码 Laravel 中也是 foreach 实现的。 没仔细研究 可以看看其他框架的 collection 的 groupBy 的实现。
|