我似乎可以解决这个问题。 我有客人的两份名单/国家,来自SQL减去PHP数组
我们,美国,英国,FR,英国,英国,英国
和
美国,英国
我使用array_count_values()
制作了阵列:
Array ([us] => 2 [uk] => 4 [fr] => 1)
Array ([us] => 1 [uk] => 1)
,我想获得第一负第二
Array ([us] => 1 [uk] => 3 [fr] => 1)
这可能吗?
我似乎可以解决这个问题。 我有客人的两份名单/国家,来自SQL减去PHP数组
我们,美国,英国,FR,英国,英国,英国
和
美国,英国
我使用array_count_values()
制作了阵列:
Array ([us] => 2 [uk] => 4 [fr] => 1)
Array ([us] => 1 [uk] => 1)
,我想获得第一负第二
Array ([us] => 1 [uk] => 3 [fr] => 1)
这可能吗?
foreach($arr1 as $key => &$val){
if(isset($arr2[$key])){
$val -= $arr2[$key];
}
}
请使用描述性的变量名称,以便您的代码更容易理解。 – Bluewind
'$ arr'和'$ val'足够描述。这个循环可以很容易地插入一个函数,该函数将两个数组作为参数并且不想描述它们的上下文。 – AlienWebguy
试试这个:
foreach($bigArray as $country => $count)
{
if(isset($smallArray[$country]))
{
$bigArray[$country] -= $smallArray[$country];
}
}
请解释downvotes ... – scube
这有助于
$result = array_intersect($array1, $array2);
他要为subtrackt相同的键的值,这是不会帮他 – matino
是啊,我的错误 –
如果有第二阵列中不在第一值这将工作:
$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 )
不敢相信有多少用户不仔细阅读问题... – scube