我有這樣的初始陣列:PHP array_reduce與初始參數爲數組
[
0 => ['id' => 5, 'value' => 50],
1 => ['id' => 6, 'value' => 60],
2 => ['id' => 7, 'value' => 70],
]
,並希望將其轉換爲:
[
5 => ['value' => 50],
6 => ['value' => 60],
7 => ['value' => 70],
]
起初,我試圖用map
,卻能不會修改數組鍵,所以我認爲reduce
可以解決問題,因爲它將將數組減少爲單個值,在這種情況下爲數組。所以我嘗試過:
array_reduce(
$array,
function($carry, $item) {
return $carry[$item['id']] = $item['value'];
},
[]
);
但是它返回這個錯誤Cannot use a scalar value as an array
。我究竟做錯了什麼? array_reduce
不能接收數組作爲初始值嗎?
你需要使用陣列功能或手動將是好? –
我試圖儘可能地做到這一點,我知道一個簡單的foreach將解決這個問題。 – Mathius17
不是真正的array_reduced應該做什麼:'$ newArray = array_column($ oldArray,'value','id'); array_walk($ newArray,function(&$ value){$ value = ['value'=> $ value];});'[Demo](https://3v4l.org/nWdfg) –