2016-05-30 13 views
0

ich ein Array mit mehreren Personen-Objekte darin haben, sehen diese Objekte wie folgt aus:prüfen, ob ein Objekt in einem Array existiert

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

Jetzt habe ich in einem anderen Array bekam Objekte, die sieht nicht genau das gleiche:

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

ich habe eine foreach-Schleife zu Schleife durch Array 2 und prüfen, ob die Objekte in einem Array existiert 1.

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

Gibt es eine zu überprüfende Funktion (wie meine existInArray()), wenn mein Objekt im Array existiert? Ich muss nur überprüfen, ob die Objekt-ID existiert, andere Attribute spielen keine Rolle.

+0

Verwenden Sie 'array_diff', um zu überprüfen, ob beide Arrays identisch sind oder nicht. –

+1

Da die Objekte unterschiedlich sind, können Sie keinen einfachen Vergleich durchführen, um festzustellen, ob sie identisch sind. Was qualifiziert ein Objekt aus dem ersten Array als übereinstimmend mit einem Objekt aus dem zweiten Array? Gleiche ID? Gleicher Name? Die gleiche E-Mail? Dieselbe Sprache? Eine Kombination von denen? –

+0

Ja, müssen Sie diese Objekte in Array als 'Array_diff' konvertieren. –

Antwort

2

den Objekt-IDs als Schlüssel verwenden, wenn Sie die Objekte im Array setzen:

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

dann isset($array1[$object->id]) verwenden überprüfen, ob die Objekt existiert bereits in $array:

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

einfache Lösung sein muss, danke dafür! :) – TheBalco

0

Es ist nicht, aber man kann es schreiben:

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

Verwenden Sie in_array, um zu überprüfen, ob dieses bestimmte Objekt im Array vorhanden ist

Verwandte Themen