PHP数组-同一个键的和值


PHP array - sum values of the same key

我有php数组。。。

Array
(    
   [pages] => Array
       (
            [/stream/apple] => 2
            [/stream/melon] => 1
            [/stream/orange] => 3
            [/stream/kiwi] => 1
       )
)
Array
(    
   [pages] => Array
       (
            [/stream/apple] => 1
       )
)
Array
(    
   [pages] => Array
       (
            [/stream/kiwi] => 1
            [/stream/melon] => 4
       )
)
...

有更多的阵列

我怎么能退回这样的东西。。。

/stream/apple = 3
/stream/melon = 5
/stream/orange = 3
/stream/kiwi = 2

我找不到任何样品如何做。。。也许有人能帮我!

这个问题不够具体,无法给出结论性的建议,如果你想通过代码而不是从SQL查询中进行,你可以在第一个数组中使用for each,并添加其他数组中的值,这里是一个例子。

foreach ($array1 as $key => $val){
  if (array_key_exists($key,$array2))  $array1[$key] += $array2[$key];
  if (array_key_exists($key,$array3))  $array1[$key] += $array3[$key];
}

foreach循环允许您遍历数组,而无需担心其长度。

因此,您可以使用$key在循环遍历时存储数组密钥的值。

$val将数组的值存储在该键中。

然后,您可以使用一个非常有用的函数,名为array_exists(key,array)来检查您所在的键是否存在于其他数组中,如果存在,则将其值与第一个数组相加。

希望它能有所帮助!

编辑

要在无限数量的数组中循环,可以使用相同的过程。以下是操作方法。

  // You have all the arrays stored in $array_Nest
  // And you will store the totals in $array_Total
  foreach($array_Nest as $key_Nest => $val_Nest){    
    foreach ($array_Total as $key_Total => $val_Total){    
      if (array_key_exists($key_Total,$array_Nest[$key_Nest])){    
        $array_Total[$key_Total] += $array2[$key_Nest][$key_Total];    
      }    
    }
  }

因此,基本上每个$array_Nest[$key_Nest]都是一个数组,从那时起,您只需要执行与以前相同的过程。