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の場合、合計は0であり、idが5の場合、合計は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 に答える