如何实现数据根据某个键值将相同键值合并生成新二维数组的方法

2021-03-10 17:01:07 +08:00
 cs5117155
$user = array(
    0 => array(
        'sid'    => 1,
        'name'  => '张三',
        'email' => 'zhangsan@sina.com',
    ),
    1 => array(
        'sid'    => 2,
        'name'  => '李四',
        'email' => 'lisi@163.com',
    ),
    2 => array(
        'sid'    => 5,
        'name'  => '王五',
        'email' => '10000@qq.com',
    ),
    3 => array(
        'sid'    => 2,
        'name'  => '秦王',
        'email' => '11110@qq.com',
    )
);

如果不用 foreach 循环,还有什么更好的办法吗 最后的效果想得到如下


$result = array(
    1 => array(
        array(
            'sd' => 1,
            'name' => '张三',
            'email' => 'zhangsan@sina.com',
        )
    ),
    2 => array(
        array(
            'sid' => 2,
            'name' => '李四',
            'email' => 'lisi@163.com',
        ),
        array(
            'sid' => 2,
            'name' => '秦王',
            'email' => '11110@qq.com',
        )
    ),
    5 => array(
        array(
            'sid' => 5,
            'name' => '王五',
            'email' => '10000@qq.com',
        )
    ),

);
1506 次点击
所在节点    PHP
6 条回复
VgV
2021-03-10 19:50:41 +08:00
array_merge_recursive
Sunyanzi
2021-03-10 22:13:53 +08:00
楼上的答案是错的 ... array_merge_recursive 和这个需求完全不沾边 ...

以及没有更好的办法 ... foreach 其实是最高效且易懂的解决方案 ...

但如果你坚持非要写得花一点的话 ... 我第一反应是用 array_reduce ... 如下 ...

i.imgur.com/hwdkjwY.png
renmu123
2021-03-11 09:06:58 +08:00
你搜搜看 php groupby 有什么花的写法
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 参数来重置数组键的时候,非常管用)
crynocry
2021-03-14 08:32:59 +08:00
4L 的答案是错的。array_column 只会整理出一维数组。
crynocry
2021-03-14 08:34:19 +08:00
接上条 刚刚看了 Laravel groupBy 的源码 Laravel 中也是 foreach 实现的。 没仔细研究 可以看看其他框架的 collection 的 groupBy 的实现。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX