2015-01-09 7 views
0

Я работаю с двумя многомерной разницей массива ниже мой массив:PHP два многомерный массив разница

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 
(
    [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 и сохранить его в одномерном массиве и сравнить, но потребовалось много времени. Просьба помочь мне в более эффективном и быстром решении.

+1

Эта ссылка может помочь вам .. http://stackoverflow.com/questions/12246039/multidimensional-array-difference-php – next2u

+0

@ next2u не работает с моим условием, которое я пробовал. :( – TomPHP

ответ

1

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

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 
     ) 

) 
0

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

Вы можете посетить эту страницу для получения дополнительной информации: 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); 
     } 
    } 
} 

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

+0

Нет, я прошел через эту длинную спину. – TomPHP

+0

Почему это не работает на вас? Объясните – Nemesis

+0

, если вы снова прочитаете вопрос и проверьте с помощью решения ур u, вы будете знать, что .. если и объясните мне, что будет вывод $ array3 u будет знать это. – TomPHP

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