2016-01-13 5 views
3

я занят обучения PHP и искал способ сравнения двух ассоциативных массивов с помощью как ключ и значение, а затем найти разность двух т.е.PHP Сравнение двух многомерных массивов по ключу и значению

Если бы я имел ассоциативный массив:

array (size=2) 
    'x15z' => int '12' (length=2) 
    'x16z' => int '3' (length=1) 

и еще один со следующим:

array (size=1) 
    'x15z' => int 1 

Я пытаюсь найти разницу между двумя ассоциативными массивами и я ТОК ently пытается использовать array_diff_assoc ($ array1, $ array2), и это работает в том случае, когда один элемент отсутствует в другой, однако в случае, описанном выше, разница

array (size=2) 
    'x15z' => int '12' (length=2) 
    'x16z' => int '3' (length=1) 

в отличие от того, что я ищу для которых:

array (size=2) 
    'x15z' => int '11' (length=2) 
    'x16z' => int '3' (length=1) 

В результате также рассчитывается разница значений.

Существует ли какой-либо логический способ вычисления разности двух ассоциативных массивов на основе их ключей и значений? Благодаря!

+1

Вы фактический результат ('разница {код}') выглядит идентично вашему ожидаемому результату ('для которого {код}') ?? – Steve

+0

Извинения. Исправлена! – liamjnorman

+0

Я до сих пор не понимаю – Tim

ответ

2
function calculateDifference($array1, $array2){ 
    $difference = array(); 
    foreach($array1 as $key => $value){ 
    if(isset($array2[$key])){ 
     $difference[$key] = abs($array1[$key] - $array2[$key]); 
    }else{ 
     $difference[$key] = $value; 
    } 
    } 
    foreach($array2 as $key => $value){ 
    if(isset($array1[$key])){ 
     $difference[$key] = abs($array1[$key] - $array2[$key]); 
    }else{ 
     $difference[$key] = $value; 
    } 
    } 
    return $difference; 
} 
+0

Удивительное спасибо! – liamjnorman

+0

Будет ли способ выполнить это с использованием методов массива PHP? Просто из интереса? – liamjnorman

+0

Я не знаю, но если есть, то он будет где-то задокументирован: http://php.net/manual/en/ref.array.php – HenryTK

Смежные вопросы