php 数组参数默认值,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'];

},

[]

);

但是它返回此错误.无法将标量值用作数组.我究竟做错了什么? array_reduce是否不能接收数组作为初始值?

解决方法:

正如马克·贝克德(Mark Ba​​kerdid)所言.我也做了foreach循环.

$arr = array(

array('id' => 5, 'value' => 50),

array('id' => 6, 'value' => 60),

array('id' => 7, 'value' => 70)

);

$result = array();

$result = array_column($arr, 'value', 'id');

array_walk($result, function(&$value) { $value = ['value' => $value]; });

//I did this using foreach loop, But the OP need it through array function.

//foreach($arr as $key => $value){

// $result[$value['id']] = array('value' => $value['value']);

//}

echo '

';

print_r($result);

结果:

Array

(

[5] => Array

(

[value] => 50

)

[6] => Array

(

[value] => 60

)

[7] => Array

(

[value] => 70

)

)

标签:dictionary,reduce,arrays,php

来源: https://codeday.me/bug/20191118/2030132.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值