我似乎可以解決這個問題。 我有客人的兩份名單/國家,來自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