Вычитание массивов php - PullRequest
       36

Вычитание массивов php

2 голосов
/ 17 ноября 2011

Я могу решить эту проблему.У меня есть два списка посетителей / страны, которые приходят из sql

нас, нас, Великобритании, Франции, Великобритании, Великобритании, Великобритании

и

us, uk

Я сделал из них массивы с помощью array_count_values():

Array ( [us] => 2 [uk] => 4 [fr] => 1 )
Array ( [us] => 1 [uk] => 1) 

Теперь я хотел бы получить первый минус второй

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

Возможно ли это?

Ответы [ 5 ]

8 голосов
/ 17 ноября 2011
foreach($arr1 as $key => &$val){
    if(isset($arr2[$key])){
        $val -= $arr2[$key];
    }
}
3 голосов
/ 17 ноября 2011

Попробуйте это:

foreach($bigArray as $country => $count)
{
  if(isset($smallArray[$country]))
  {
    $bigArray[$country] -= $smallArray[$country];
  }
}
0 голосов
/ 17 ноября 2011

Это будет работать, если во втором массиве есть значения, которых нет в первом:

$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
)
0 голосов
/ 17 ноября 2011

Это помогает

$result = array_intersect($array1, $array2);
0 голосов
/ 17 ноября 2011
<?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);
?> 
...