@mrWan

Как получить расхождения многомерного массива?

Есть два многомерных массива:
$arr1 = array (
    0 => array ('title' => 'Автослесарь'),
    1 => array ('title' => 'ТРЕБУЕТСЯ РАМЩИК'),
    2 => array ('title' => 'ТРЕБУЕТСЯ ПОМОЩНИК НА ПИЛОРАМУ')
);  
$arr2 = array (
    0 => array ('title' => 'Автослесарь2'),
    1 => array ('title' => 'ТРЕБУЕТСЯ РАМЩИК2'),
    2 => array ('title' => 'ТРЕБУЕТСЯ ПОМОЩНИК НА ПИЛОРАМУ')
);

Надо получить:
$result = array (
  0 => array ('title' => 'Автослесарь2'),
  1 => array ('title' => 'ТРЕБУЕТСЯ РАМЩИК2')
);
  • Вопрос задан
  • 392 просмотра
Пригласить эксперта
Ответы на вопрос 2
solotony
@solotony
покоряю пик Балмера
перебором, как еще.

если надо ускорить - отсортировать и линейно сравнить
Ответ написан
function array_diff_assoc_recursive($array1, $array2) {
	$difference=array();
	foreach($array1 as $key => $value) {
		if( is_array($value) ) {
			if( !isset($array2[$key]) || !is_array($array2[$key]) ) {
				$difference[$key] = $value;
			} else {
				$new_diff = array_diff_assoc_recursive($value, $array2[$key]);
				if( !empty($new_diff) )
					$difference[$key] = $new_diff;
			}
		} else if( !array_key_exists($key,$array2) || $array2[$key] !== $value ) {
			$difference[$key] = $value;
		}
	}
	return $difference;
}


Взял тут - php.net/manual/ru/function.array-diff-assoc.php#111675
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы