我有这样的初始阵列: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) –