减去php数组

时间:2011-11-17 15:48:35

标签: php arrays count compare

我似乎可以解决这个问题。 我有两个来自sql

的访客/国家/地区列表
  

我们,美国,英国,FR,英国,英国,英国

  

美国,英国

我用array_count_values()

制作了数组
Array ( [us] => 2 [uk] => 4 [fr] => 1 )
Array ( [us] => 1 [uk] => 1) 

现在,我想得到第一个减去第二个

Array ( [us] => 1 [uk] => 3 [fr] => 1 )

这可能吗?

5 个答案:

答案 0 :(得分:8)

foreach($arr1 as $key => &$val){
    if(isset($arr2[$key])){
        $val -= $arr2[$key];
    }
}

答案 1 :(得分:3)

试试这个:

foreach($bigArray as $country => $count)
{
  if(isset($smallArray[$country]))
  {
    $bigArray[$country] -= $smallArray[$country];
  }
}

答案 2 :(得分:0)

如果第二个数组中的值不在第一个数组中,这将起作用:

$array1 = array("us" => 2, "uk" => 4, "fr" => 1);
$array2 = array("us" => 1, "uk" => 1, "ca" => 1);

$keys = array_keys(array_merge($array1, $array2));
foreach ($keys as $key) {
    $result[$key] = (isset($array1[$key]) ? $array1[$key] : 0) - (isset($array2[$key]) ? $array2[$key] : 0);
}

结果:

Array
(
    [us] => 1
    [uk] => 3
    [fr] => 1
    [ca] => -1
)

答案 3 :(得分:-2)

<?php
$array1 = array(1,2,3,4,5,6,a,b,c,d);
$array2 = array(a,b,c,d);
$result = array_diff($array1, $array2);
print_r($result);
?> 

答案 4 :(得分:-3)

这有助于

$result = array_intersect($array1, $array2);