私は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 になります。
私は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 になります。
$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);
これを試して:
$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;
これはおそらく最も読みやすい方法の 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;
}
}