0

У меня есть два многомерных массива. первый из них:Сравнение многомерных массивов с использованием конкретного ключа в php

Array 
(
    [0] => Array 
      (
       [username] => J1 
       [fullname] => John1 
     ) 
    [1] => Array 
      (
       [username] => K1 
       [fullname] => Kate 
     ) 
    [2] => Array 
      (
       [username] => P1 
       [fullname] => Peter 
     ) 
    [3] => Array 
      (
       [username] => M1 
       [fullname] => Mary 
     ) 
) 

and the second one is: 

Array 
(
    [0] => Array 
      (
       [username] => J1 
       [fullname] => John33 
     ) 
    [1] => Array 
      (
       [username] => L1 
       [fullname] => Lucas 
     ) 
    [2] => Array 
      (
       [username] => P1 
       [fullname] => Paul 
     ) 
)  

Я хочу, чтобы сравнить два массива используя только опцию имени пользователя, чтобы получить элементы первого массива, которые не входят во втором массиве (сравнивая только имена пользователей).

так я хочу новый массив, как следующие:

Array 
    (
     [0] => Array 
       (
        [username] => K1 
        [fullname] => Kate 
      ) 
     [1] => Array 
       (
        [username] => M1 
        [fullname] => Mary 
      ) 
    ) 

Любая помощь ?? большое спасибо!!!

+0

Что вы еще пытались сделать? – briosheje

ответ

1

Вы могли бы сделать что-то подобное в PHP> = 5.5.0:

$result = array_diff_key(array_column($array1, null, 'username'), 
         array_column($array2, null, 'username') 
); 
+0

Спасибо большое! Это сработало отлично !!! – George

0

Попробуйте перебрать одного массива и сравнить, как это:

$array_one = Array 
(
    [0] => Array 
      (
       [username] => J1 
       [fullname] => John1 
     ) 
    [1] => Array 
      (
       [username] => K1 
       [fullname] => Kate 
     ) 
    [2] => Array 
      (
       [username] => P1 
       [fullname] => Peter 
     ) 
    [3] => Array 
      (
       [username] => M1 
       [fullname] => Mary 
     ) 
); 
    $array_two = Array 
(
    [0] => Array 
      (
       [username] => J1 
       [fullname] => John33 
     ) 
    [1] => Array 
      (
       [username] => L1 
       [fullname] => Lucas 
     ) 
    [2] => Array 
      (
       [username] => P1 
       [fullname] => Paul 
     ) 
); 
    foreach($array_one as $key => $value) { 
     if($value['username'] == $array_two[$key]['username']) 
      // do something 
     else 
      // do something 
    } 
0
$array1 = array(
    "0" => Array(
     "username" => "J1", 
     "fullname" => "John1" 
    ), 
    "1" => Array(
     "username" => "K1", 
     "fullname" => "Kate" 
    ), 
    "2" => Array(
     "username" => "P1", 
     "fullname" => "Peter" 
    ), 
    "3" => Array(
     "username" => "M1", 
     "fullname" => "Mary" 
    ) 
); 

$array2 = array(
    "0" => Array(
     "username" => "J1", 
     "fullname" => "John33" 
    ), 
    "1" => Array(
     "username" => "L1", 
     "fullname" => "Lucas" 
    ), 
    "2" => Array(
     "username" => "P1", 
     "fullname" => "Paul" 
    ) 
); 

$newarr = array(); 
foreach($array1 as $key => $val) { 
    if($val['username'] != $array2[$key]['username']){ 
     $newarr[] = $val; 
    } 
} 

echo '<pre>';print_r($newarr);echo '</pre>'; 

Выход:

Array 
(
    [0] => Array 
     (
      [username] => K1 
      [fullname] => Kate 
     ) 

    [1] => Array 
     (
      [username] => M1 
      [fullname] => Mary 
     ) 

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