2016-05-30 4 views
0

У меня есть массив с несколькими человеко-объектов в ней, это объекты выглядеть следующим образом:Проверьте, существует ли объект в массиве

id: 1, 
name: 'Max Muster', 
email: '[email protected]', 
language: 'German' 

Теперь у меня есть объекты в другой массив, который не выглядит точно так же:

id: 1, 
name: 'Max Muster', 
email: '[email protected]', 
language: 'de' 

у меня Еогеасп петля в петлю через массив 2 и проверить, если объекты существуют в массиве 1.

foreach($array2 as $entry) { 
    if(existsInArray($entry, $array1)) { 
     // exists 
    } else { 
     // doesn't exist 
    } 
} 

Есть функция проверки (например, my existsInArray()), если мой объект существует в массиве? Мне просто нужно проверить, существует ли идентификатор объекта, другие атрибуты не имеют значения.

+0

использовать 'array_diff', чтобы проверить, что оба массива одинаковы или нет. –

+1

Поскольку объекты разные, тогда вы не можете сделать простого сравнения, чтобы убедиться, что они одинаковые. Что квалифицирует объект из первого массива как совмещение объекта со вторым массивом? Тот же идентификатор? То же имя? Та же электронная почта? Одинаковый язык? Некоторая их комбинация? –

+0

Да, нужно преобразовать их Объект в массив, чем 'array_diff'. –

ответ

2

Используйте идентификаторы объектов в качестве ключей, когда вы кладете объекты в массиве:

$array1[$object->id] = $object; 

затем использовать isset($array1[$object->id]), чтобы проверить, объект уже существует в $array:

if (isset($array1[$object->id])) { 
    // object exists in array; do something 
} else { 
    // object does not exist in array; do something else 
} 
+0

простым решением, спасибо за это! :) – TheBalco

0

Это не делает, но вы можете написать это:

function existsInArray($entry, $array) { 
    foreach ($array as $compare) { 
     if ($compare->id == $entry->id) { 
      return true; 
     } 
    return false; 
} 
0
foreach($array2 as $entry) { 
    if(in_array($entry, $array1)) { 
     // exists 
    } else { 
    // doesn't exist 
    } 
} 

Используйте in_array, чтобы проверить, существует ли этот конкретный объект в массиве

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