为了账号安全,请及时绑定邮箱和手机立即绑定

将关联数组的数组减少为关联数组

将关联数组的数组减少为关联数组

PHP
斯蒂芬大帝 2022-01-08 17:20:47
有没有一种惯用的方式(一些现有的功能)来减少[[0 => 'zero'], [1 => 'one']]到[0 => 'zero', 1 => 'one']?很容易只创建一个循环来完成这项工作,但它似乎效率低下,我显然更喜欢这里的单线。编辑:哦,这里 0 和 1 相互跟随只是随机的。数组也可以是[[2 => 'two'], [3 => 'three']]
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

假设您希望保留键,并假设在键冲突的情况下,您想要第一个值,array_reduce则非常适合该任务。

$r = array_reduce($a, function ($acc, $v) { return $acc + $v; }, []);

这在功能上与@Rakesh Jakhar 的解决方案相同。我认为它在语义上更忠实于问题,并且避免了初始化$ruse子句。

在 php 7.4 中,这可以用箭头函数写得更好一些:

$r = array_reduce($a, fn($acc, $v) => $acc + $v, []);

https://www.php.net/manual/en/function.array-reduce.php


查看完整回答
反对 回复 2022-01-08
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您可以array_merge与...splat 运算符一起使用


$a = [[0 => 'zero'], [1 => 'one']];

print_r(array_merge(...$a));

解决方案二:保留密钥


$a = [[1 => 'one'], [0 => 'zero']];

$r = [];

array_walk($a, function($v, $k) use (&$r){ $r += $v;});

print_r($r);

工作演示:https : //3v4l.org/9sRaE


查看完整回答
反对 回复 2022-01-08
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信