检查数组中是否存在对象

时间:2016-05-30 11:49:28

标签: php arrays object

我有一个包含多个person-objects的数组,这个对象看起来像这样:

id: 1,
name: 'Max Muster',
email: 'max.muster@example.com',
language: 'German'

现在,我在另一个数组中有对象,它们看起来并不完全相同:

id: 1,
name: 'Max Muster',
email: 'max.muster@example.com',
language: 'de'

我有一个foreach循环来循环遍历数组2并检查对象是否存在于数组1中。

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

是否有一个要检查的函数(比如我的existsInArray()),如果我的对象存在于数组中?我只需要检查一下,如果object-id存在,其他属性无关紧要。

4 个答案:

答案 0 :(得分:7)

将对象放入数组时使用对象ID作为键:

$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
}

答案 1 :(得分:0)

它没有,但你可以写下来:

function existsInArray($entry, $array) {
    foreach ($array as $compare) {
        if ($compare->id == $entry->id) {
            return true;
        }
    return false;
}

答案 2 :(得分:0)

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

使用in_array检查数组中是否存在该特定对象

答案 3 :(得分:0)

使用in_array

if(in_array($object, array)) {
   //exists
} else {
   //does not exist
}