有沒有一種慣用的方式(一些現有的功能)來減少[[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 的解決方案相同。我認為它在語義上更忠實于問題,并且避免了初始化$r
和use
子句。
在 php 7.4 中,這可以用箭頭函數寫得更好一些:
$r = array_reduce($a, fn($acc, $v) => $acc + $v, []);
https://www.php.net/manual/en/function.array-reduce.php

阿波羅的戰車
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
- 2 回答
- 0 關注
- 180 瀏覽
添加回答
舉報
0/150
提交
取消