php two Разница в многомерном массиве

Я работаю с двумя многомерными массивами, ниже приведены мои массивы:

Array1:

Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)

[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)

)

array2:

Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)

[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)

[2] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)

)

Я просто хочу сравнить разницу с ‘F_CONTACT_ID’ в массиве.

Мой результирующий массив должен быть:

Результат:

Array
(
[2] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)
)

Также, если один массив пуст: предположим, что Array2 пуст. Мой результат Array должен быть:

Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)

[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)

)

Я пробовал разные решения, но у меня ничего не получалось. Я попытался извлечь F_CONTACT_ID и сохранить в одномерном массиве и сравнить, но это заняло много времени.
Пожалуйста, помогите мне в лучшем и быстром решении.

0

Решение

Вы пробовали это?

for($i=0;$i<count($array1);$i++) {
$temp[$array1[$i]['F_CONTACT_ID']] = $array1[$i];
};

for($i=0;$i<count($array2);$i++) {
if($temp[$array2[$i]['F_CONTACT_ID']]) {
unset($temp[$array2[$i]['F_CONTACT_ID']]);
} else {
$temp[$array2[$i]['F_CONTACT_ID']] = $array2[$i];
}
}

echo "<pre>";
print_r($temp);
echo "</pre>";

Результат будет примерно таким:

Array
(
[5] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)

)
1

Другие решения

Вы можете попробовать функцию массив дифф-ключ () функция, которая поможет вам сравнить два многомерных массива с помощью клавиш.

Вы можете посетить эту страницу для получения дополнительной информации: http://php.net/manual/en/function.array-diff-key.php

0

как насчет этого?

$array1;
$array2;

$array3;
foreach ($array1 as $ar1) {
foreach ($array2 as $ar2) {
if ($ar1['F_CONTACT_ID']==$ar2['F_CONTACT_ID']) {
array_push($array3, $ar1);
}
}
}

это не очень оптимизирует, чтобы максимизировать производительность, измените вторую проверку foreach, если array_push уже добавляется (используя условие bool)

0