代码之家  ›  专栏  ›  技术社区  ›  Md. Shamvil Hossain

比较数组元素并基于键和值进行添加

  •  -2
  • Md. Shamvil Hossain  · 技术社区  · 8 年前

    我有两个这样的阵列:

    $array_1 = Array ( [0] => 4 [1] => 6 [2] => 2 [3] => 6 [4] => 4 [5] => 10 [6] => 4 [7] => 6 [8] => 2 [9] => 2 [10] => 4 [11] => 4 [12] => 2 [13] => 2 );
    
    $array_2 = Array ( [0] => DK [1] => GA [2] => DK [3] => GA [4] => DK [5] => GA [6] => WE [7] => VE [8] => WE [9] => VE [10] => PLA [11] => PRA [12] => PLA [13] => PRA ) ;
    

    现在我想要这样的结果:

    $dk=4+2+4=10;
    $ga=6+6+10=22;
    $we=4+2=6;
    $ve=6+2=8;
    $pla=4+2=6;
    $pra=4+2;
    

    说明:

    在里面 $array_2 ,则, 'DK' 存在3次并且 key values are = 0,2 and 4. 所以,我必须加上 $array_1 有 key 0,2,4 并将其分配给 $dk 在这里 丹麦元 将是 4+2+4=10 。此过程对于所有其他变量都是相同的。 我该怎么做??

    2 回复  |  直到 8 年前
        1
  •  1
  •   Niklesh Raut    8 年前

    我建议您将数组设置为如下形式

    <?php
    $array_1 = [4,6,2,6];
    $array_2 = [ 0=> "DK", 1=>"GA", 2=>"DK", 3=>"GA"];
    $newArray = [];
    foreach($array_2 as $key=>$value){
      if(isset($newArray[$value])){
        $newArray[$value] +=$array_1[$key];
      }else{
        $newArray[$value] =$array_1[$key];
      }
    }
    print_r($newArray);
    ?>
    

    Live Demo

    输出:

    Array
    (
        [DK] => 6
        [GA] => 12
    )
    

    另一个建议 :相反,复杂编程尝试建立良好的关系或绑定,以避免记录中出现任何不一致

        2
  •  1
  •   Andreas    8 年前

    这将循环array2并使用和构建一个数组。
    然后输出它(只是为了查看结果),然后我使用extract根据需要提取变量。
    但我宁愿把它们放在阵列中

    Foreach($array_2 as $key => $val){
        If(!isset($new[$val])) $new[$val] =0;
        $new[$val] += $array_1[$key];
    }
    Var_dump($new);
    Extract($new);
    

    https://3v4l.org/jOR7Z