【问题标题】:how to sum all column values in multi-dimensional array have same value of keys? [duplicate]如何对多维数组中的所有列值求和具有相同的键值? [复制]
【发布时间】:2019-04-17 04:23:04
【问题描述】:

我有像这样的多维数组,我想求和所有列“配额”值具有相同的 id、相同的 ip 和相同的访问 ip

$array = array(
    "0" => array(
        "id" => 1,
        "ip" => 10.40.47.5,
        "visited_ip" => 10.40.40.10,
        "quota" => 20,
    ),
    "1" => array(
        "id" => 2,
        "ip" => 10.40.47.20,
        "visited_ip" => 10.40.40.10,
        "quota" => 10,
    ),
    "2" => array(
        "id" => 1,
        "ip" => 10.40.47.5,
        "visited_ip" => 10.40.40.10,
        "quota" => 30,
    )
);

我想要这样的结果

$array = array(
        "0" => array(
            "id" => 1,
            "ip" => 10.40.47.5,
            "visited_ip" => 10.40.40.10,
            "quota" => 50,
        ), 
        "1" => array(
            "id" => 2,
            "ip" => 10.40.47.20,
            "visited_ip" => 10.40.40.10,
            "quota" => 10,
        ),
    );

我需要你的帮助

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    循环数组并在关联数组中构建 id 和 ip 的组合。
    循环后用 array_values 重置键。

    编辑也没有看到你想要访问的 ip。将其添加到复合关联数组键中。

    foreach($array as $item){
        if(!isset($res[$item['id'] . ' ' . $item['ip']] . " " . "visited_ip")){
            $res[$item['id'] . ' ' . $item['ip'] . " " . "visited_ip"] = $item;
        }else{
            $res[$item['id'] . ' ' . $item['ip'] . " " . "visited_ip"]['quota'] += $item['quota'];
        }
    }
    $res = array_values($res);
    var_dump($res);
    

    输出:

    array(2) {
      [0]=>
      array(4) {
        ["id"]=>
        int(1)
        ["ip"]=>
        string(10) "10.40.47.5"
        ["visited_ip"]=>
        string(11) "10.40.40.10"
        ["quota"]=>
        int(50)
      }
      [1]=>
      array(4) {
        ["id"]=>
        int(2)
        ["ip"]=>
        string(11) "10.40.47.20"
        ["visited_ip"]=>
        string(11) "10.40.40.10"
        ["quota"]=>
        int(10)
      }
    }
    

    https://3v4l.org/5PDXp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多