php 数组问题

$arr = [
            ['name'=>'abc',value=>12],
            ['name'=>'abc',value=>15],
            ['name'=>'abc123',value=>555],
        ];

将$arr 处理  得到
$arr = [
            ['name'=>'abc',value=>27],
            ['name'=>'abc123',value=>555],
        ];
        
有什么简洁的办法没有? 指点指点?
阅读 1.9k
2 个回答
<?php
$arr = [
    ['name'=>'abc',"value"=>12],
    ['name'=>'abc',"value"=>15],
    ['name'=>'abc123',"value"=>555],
];
$re = array_reduce($arr,function($p,$c){
    foreach($p as &$item){
        if($item["name"] == $c["name"]){
            echo $c["value"];
            echo $item["value"];
            $item["value"]=$item["value"]+$c["value"];
            return $p;
        }
    }
    array_push($p,$c);
    return $p;
},[]);
function test($arr, $k, $v){
    $aa = [];
    foreach($arr as $item) {
        $aa[$item[$k]] = isset($aa[$item[$k]]) ? $aa[$item[$k]] + $item[$v]  : $item[$v];
    }
    return $aa;
}

$result = test($arr, 'name', 'value');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题