为了账号安全,请及时绑定邮箱和手机立即绑定

按属性名称求和数组值

按属性名称求和数组值

PHP
POPMUISE 2023-09-22 15:15:40
我想用相同的代码对计数值求和。这是我的数组:$data = array(    array(        'code' => 02,        'count' => 8    ),    array(        'code' => 03,        'count' => 1    ),    array(        'code' => 03,        'count' => 1    ),    array(        'code' => 03,        'count' => 7    ),    array(        'code' => 11,        'count' => 1    ),    array(        'code' => 11,        'count' => 5    ),    array(        'code' => 17,        'count' => 4    ),    array(        'code' => 17,        'count' => 2    ),    array(        'code' => 17,        'count' => 8    ));现在我尝试对数组进行分组以count使用相同的代码求和,但我认为我错了:$new_data = [];    foreach($data as $k => $v){    $total = 0;    $new_data[$v['code']] = array(        'ttl' => $v['count'] + $total,    );}echo '<pre>';print_r($new_data);echo '</pre>';正确的代码是什么?谢谢。
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

使用isset将避免未定义的偏移错误:


$new_data = [];

foreach($data as $k => $v){

    if (!isset($new_data[$v['code']]['ttl'])){

        $new_data[$v['code']]['ttl'] = 0;

    }

    $new_data[$v['code']]['ttl'] += $v['count'];

}

print_r($new_data);


查看完整回答
反对 回复 2023-09-22
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

假设您希望 to 中的键$new_data是唯一的代码,并且值是一个数组,ttl其键的值是该特定代码的计数总和:


$new_data = [];    

foreach($data as $v){

    if (!array_key_exists($v['code'], $new_data)) {

        $new_data[$v['code']]['ttl'] = $v['count'];

    } else {

        $new_data[$v['code']]['ttl'] += $v['count'];

    }

}


查看完整回答
反对 回复 2023-09-22
?
不负相思意

TA贡献1777条经验 获得超10个赞

我认为这就是您想要的输出:


Array

(

    [2] => Array

        (

            [ttl] => 8

        )


    [3] => Array

        (

            [ttl] => 9

        )


    [11] => Array

        (

            [ttl] => 6

        )


    [17] => Array

        (

            [ttl] => 14

        )


)


如果是这样,您可以对代码进行少量修改,如下所示:


$new_data = [];

foreach ($data as $d) {

    if (isset($new_data[$d['code']]['ttl'])) {

        $new_data[$d['code']]['ttl'] += $d['count'];

    } else {

        $new_data[$d['code']]['ttl'] = $d['count'];

    }

}


查看完整回答
反对 回复 2023-09-22
  • 3 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信