【问题标题】:PHP - sum of two simple arrays to createPHP - 要创建的两个简单数组的总和
【发布时间】:2014-01-26 18:59:35
【问题描述】:
Array1 ( [a] => 1 [b] => 2 [c] => 7 [d] => ) 

Array2 ( [a] => 2 [x] => 4 [y] =>  )

我尝试了这些来添加两个数组以获得一个新数组,其中添加了匹配的键值。最终的数组是:

Array3 ( [a] => 3 [b] => 2 [c] => 7 [d] => [x] => 4 [y] => ) 

我正在查看,但无法让最终数组显示所有键:

    foreach($array1 as $key => $val)
        {
        $final_value = $val + $array2[$key]; 
        $final_array[] = array($key=>$final_value);
        }

是我有,但不起作用。

我还查看了 Jonah 的建议:Merge 2 Arrays and Sum the Values (Numeric Keys)

【问题讨论】:

    标签: arrays addition


    【解决方案1】:

    我们开始吧:

    $firstArray = array ('a' => 1, 'b' => 2, 'c' => 7, 'd' => 0); // d must have a value
    $secondArray = array ('a' => 2, 'x' => 4, 'y' =>  0); // y must have a value
    
    $keys = array();
    $result = array();
    
    foreach($firstArray as $key => $value) {
        $keys[] = $key;
    }
    
    foreach($secondArray as $key => $value) {
        if(! in_array($key, $keys)) {
             $keys[] = $key;
        }
    }
    
    foreach($keys as $key) {
    
        $a = 0;
        $b = 0;
    
        if(array_key_exists($key, $firstArray)) {
            $a = $firstArray[$key];
        }
    
        if(array_key_exists($key, $secondArray)) {
            $b = $secondArray[$key];
        }
    
        $result[$key] = $a + $b;
    }
    
    print_r($result);
    

    输出:

    数组([a] => 3 [b] => 2 [c] => 7 [d] => 0 [x] => 4 [y] => 0)

    【讨论】:

      【解决方案2】:

      这会遍历两个数组并相互比较它们的键。可以通过检查对其进行一些优化,使其不会与之前的值进行比较。

      $array1 = array (
          'a' => 1,
          'b' => 2,
          'c' => 7,
          'd' => // needs a value
      );
      
      $array2 = array (
          'a' => 2
          'b' => 4
          'c' => // needs a value
      );
      
      foreach ($array1 as $key1 => $value1) {
          foreach ($array2 as $key2 => $value2) {
              if ($key1 == $key2) {
                  $array3[$key1] = $value1 + $value2;
              }
          }   
      }
      

      【讨论】:

      • 'if ($key1 == $key2)' 只有在相同位置的元素具有相同的键名时才会为真,否则它不会做总数。
      【解决方案3】:

      试试这个代码

      $Array3 = $Array1;
      foreach ($Array2 as $k => $v) {
          $Array3[$k] = $Array3[$k] + $Array2[$k];
      }
      

      【讨论】:

        猜你喜欢
        • 2019-03-11
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 2018-06-25
        • 2014-03-03
        • 2011-01-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多