【问题标题】:Sum value of common keys of PHP arrays [duplicate]PHP数组的公共键的总和值[重复]
【发布时间】:2013-11-29 04:58:45
【问题描述】:

我有以下数组

$data = array (
    "192.168.10.101" => array (
        "param1" => 80,
        "param2" => 3
    ),

    "192.168.10.99" => array (
        "param1" => 50,
        "param2" => 4
    )
);

我想将诸如 sum param1 of 192.168.10.101param1 of 192.168.10.99 之类的公共键的值相加。

【问题讨论】:

  • 当我尝试“stackoverflow.com/questions/1496682/…”的方法时,它给出了一个错误:注意:未定义的索引:第 20 行的 D:\webdocuments\array.php 中的参数 1 注意:未定义的索引:D 中的参数 2 :\webdocuments\array.php 第 20 行

标签: php arrays


【解决方案1】:
$result = array_shift($array);
foreach ($array as $val) {
    foreach ($val as $key => $val) {
        $result[$key] += $val;
    }
}

print_r($result)

Array ( 
    [param1] => 130 
    [param2] => 7 
) 

【讨论】:

    【解决方案2】:
    $myArray = array(
        "192.168.10.101" => array (
            "param1" => 80,
            "param2" => 3
        ),
    
        "192.168.10.99" => array (
            "param1" => 50,
            "param2" => 4
        )
    );
    $sumArray = 0;
    foreach ($myArray as $k=>$subArray) {
      if(isset($subArray['param1']))
        $sumArray +=$subArray['param1'];
    }
    
    print_r($sumArray);
    

    【讨论】:

      【解决方案3】:
      <?php
      $data = array(
          "192.168.10.101" => array (
              "param1" => 80,
              "param2" => 3
          ),
      
          "192.168.10.99" => array (
              "param1" => 50,
              "param2" => 4
          )
      );
      $param_1=0;
      $param_2=0;
      foreach($data as $dat)
      {
          $param_1+=$dat['param1'];
          $param_2+=$dat['param2'];
      
      }
      
      echo $param_1;
      echo $param_2;
      

      【讨论】:

      • 创建的数组是动态的。
      • 是的......循环将汇总所有数组键值
      【解决方案4】:
      $param_total = 0;
      foreach($data as $key => $val){
          $param_total += $val['param1'];
      }
      echo $param_total;
      

      【讨论】:

        【解决方案5】:

        你可以试试like,(求key的存在)

          if(isset($data['192.168.10.101']["param1"]) && isset($data['192.168.10.99']["param1"]))
          {
             $data['192.168.10.101']["param1"] += $data['192.168.10.99']["param1"];
          }
        

        【讨论】:

          猜你喜欢
          • 2018-06-01
          • 2019-08-28
          • 2021-10-16
          • 2013-02-04
          • 1970-01-01
          • 1970-01-01
          • 2011-05-03
          • 2021-04-10
          • 2020-01-01
          相关资源
          最近更新 更多