1

我有这样的数组:array('id'=>value,'id'=>value)

$arrays=array(
    [0] => Array ( [3] => 1, [102] => -1, [15] => 1,)            
    [1] => Array ( [5] => 1, [80] => -1 )                 
    [2] => Array ( [99] => -1, [3] => -1,[5] => 1 ) 
)

我需要得到给定键的总结果。在上面的例子中,如果要求 id 为 3,则 sum 为 0,如果要求 id 为 5,则 sum 为 2。我只能想到这样的事情:

  foreach($arrays as $array){
    foreach( $array as $id=>$v){
     if( $id == $asked )
        $total = $total + $v;
    }
  }

不知何故,我想必须有一种有效的方法来完成这项工作。我乐意去学。谢谢!

4

3 回答 3

2

使用array_reduce

$key = 3;

$sum = array_reduce($arrays, function(&$memo, $item) use($key){

    array_key_exists($key, $item) && $memo += $item[$key];

    return $memo;

});
于 2012-09-22T00:42:17.493 回答
0
foreach($arrays as $array) {
    $total += $array[$id];
}
于 2012-09-22T00:43:13.030 回答
0
 $prec_array=end($arrays);
 foreach($arrays as $array){
    foreach($array as $id=>$v){
     if(array_key_exists($id, $prec_array) )
            $total[$id] += $v + $prec_array[$id] ;
    $prec_array = $array;
    } 
 }
于 2012-09-22T01:05:03.610 回答