2009-07-15 5 views
0

Я пытаюсь сравнить с многомерными массивами, но я не могу просто использовать array_diff_assoc(). Массивы, которые я пытаюсь сравнить, являются ассоциативными массивами, и они оба сортируются, поэтому ключи находятся в одном порядке. По большей части массивы идентичны по структуре. Я не могу понять, как сравнивать элементы, хранящие массивы, я могу сравнить элементы, которые поддерживают одно значение, прекрасно знает кто-нибудь, что я могу сделать?Сравнение многомерных массивов в PHP

Спасибо за помощь!

ответ

2

На странице руководства для array_diff_assoc() есть user contributed note, что похоже на то, что вы просите.

+0

Это именно то, что мне нужно. Я пропустил это, когда я прошел через руководство, lol! – cskwrd

1

Непонятно, хотите ли вы видеть, равны ли они или действительно хотят получить результаты различий.

Если это первое, то вы могли бы сделать это надлежащим образом, с рекурсивной функцией:

$array1 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('foo'))); 
$array2 = array('a' => 1, 'b' => 2, 'c' => array('ca' => 1, 'cb' => array('bar'))); 

var_dump(arrayEqual($array1, $array2)); 

function arrayEqual($a1, $a2) 
{ 
    if (count(array_diff($a1, $a2))) 
     return false; 

    foreach ($a1 as $k => $v) 
    { 
     if (is_array($v) && !arrayEqual($a1[$k], $a2[$k])) 
      return false; 
    } 

    return true; 
} 

Или использовать полный хак вроде этого:

if (serialize($array1) == serialize($array2)) 
3

Если вы пытаетесь просто увидеть если они отличаются (а не то, что конкретно отличается), вы можете попробовать что-то вроде:

return serialize($array1) == seralize($array2); 

Это даст вам да или неах на равенство двух массивов.

+0

Creative. Мне это нравится. +1 –

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