Php сравнить два вложенных массива и предсказать разницу

Как найти разницу между двумя массивами

// ARRAY 1

$a1 = array(
    "a1" => 1,
    "a3" => array(
        "a31" => 31
    ),
    "a4" => array(
        "a41" => 41
    ),
    "a5" => array(
        "a51" => 51,
        "a52" => 52
    )
);

// ARRAY 2
$a2 = array(
    "a1" => 1,
    "a2" => 2,
    "a3" => array(
        "a31" => 31,
        "a32" => array(
            "a321" => 321,
            "a322" => 322
        )
    ),
    "a4" => array(
        "a41" => 42
    ),
    "a5" => array(
        "a51" => 51,
        "a52" => 52
    )
);

Функция array_diff возвращает == > Array ( )

Но в приведенных выше двух переменных массива существует большая разница.

пример:

  • в ARRAY1 Нет ключа a2, но в ARRAY2 a2 имеется.
  • ARRAY2 a3 содержит вложенный массив (один вложенный уровень), но в ARRAY 2 содержит два вложенных уровня.

Итак, я хочу сравнить два массива n-level (т.е. вложенный массив)

Ответ 1

$results = array_diff(array_map('serialize',$a2),array_map('serialize',$a1));
$results = array_map('unserialize',$results);

echo '<pre>';
print_r($results);