0

私は2つの配列を持っています:

$a=Array 
( 
[25] => 21.00 
[33] => 63.00
[12] => 45.00
[14] => 12.00
[17] => 22.00
)
$b=Array
(
[0] => 24 
[1] => 25 
[3] => 14
) 

配列 $a の値のみを合計して、それらのキーが配列 $b の値を大きくしないようにしたいと考えています。たとえば、この例では、出力は 130 になります。

4

3 に答える 3

5
$a = array( 
    25 => 21.00,
    33 => 63.00,
    12 => 45.00,
    14 => 12.00,
    17 => 22.00,
);
$b = array(24, 25, 14);

$result = array_sum(
    array_diff_key(
        $a,
        array_flip($b)
    )
);
var_dump($result);
于 2013-09-28T15:15:42.550 に答える
0

これを試して:

$sum = 0;
foreach($a as $arr => $value_a){
   $find = 0;
   foreach($b as $arr_b => $value_b){
       if($arr == $value_b)
           $find = 1;
   }
   if($find == 0)
      $sum += $value_a
}

echo'sum: '.$sum;
于 2013-09-28T15:12:54.367 に答える
0

これはおそらく最も読みやすい方法の 1 つです。ループを 1 つだけ必要とするより効率的な方法があるため、これの目的は何ですか。

$total = 0;
foreach($a as $k => $v){
    $sum = true;
    foreach($b as $kk => $vv){
        if($vv == $k){
            $sum = false;
        }
    }       
    if($sum){
        $total += $v;
    }
}
于 2013-09-28T15:21:38.143 に答える