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

这可能是最易读的方式之一。这样做的目的是什么,因为有更有效的方法可以确保只需要一个循环。

$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 回答