当键不是另一个数组的值时,数组的和值

时间:2013-09-28 15:09:25

标签: php

我有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。 任何想法都将不胜感激。谢谢!

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;

答案 2 :(得分:0)

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

$total = 0;
foreach($a as $k => $v){
    $sum = true;
    foreach($b as $kk => $vv){
        if($vv == $k){
            $sum = false;
        }
    }       
    if($sum){
        $total += $v;
    }
}