Wie überprüfe ich, ob mehrere Werte vorhanden sind, z.
$arg = array('foo','bar');
if(in_array('foo','bar',$arg))
Das ist ein Beispiel, damit Sie es ein bisschen besser verstehen. Ich weiß, dass es nicht funktionieren wird.
Schneiden Sie die Ziele mit dem Heuhaufen und stellen Sie sicher, dass der Schnittpunkt genau den Zielen entspricht:
$haystack = array(...);
$target = array('foo', 'bar');
if(count(array_intersect($haystack, $target)) == count($target)){
// all of $target is in $haystack
}
Beachten Sie, dass Sie nur überprüfen müssen, ob die Größe des resultierenden Schnittpunkts der Größe des Arrays von Zielwerten entspricht, um zu sagen, dass $haystack
es sich um eine Obermenge von handelt$target
.
Um zu überprüfen, ob mindestens ein Wert in auch vorhanden $target
ist $haystack
, können Sie Folgendes überprüfen:
if(count(array_intersect($haystack, $target)) > 0){
// at least one of $target is in $haystack
}
Als Entwickler sollten Sie wahrscheinlich mit dem Erlernen von Mengenoperationen (Differenz, Vereinigung, Schnittmenge) beginnen. Sie können sich Ihr Array als einen "Satz" und die Schlüssel vorstellen, nach denen Sie suchen.
Überprüfen Sie, ob ALLE Nadeln vorhanden sind
Überprüfen Sie, ob eine der Nadeln vorhanden ist
quelle
quelle
Wenn Sie die Antwort von @Rok Kralj (beste IMO) deaktivieren, um zu überprüfen, ob Nadeln im Heuhaufen vorhanden sind, können Sie
(bool)
stattdessen verwenden,!!
was bei der Codeüberprüfung manchmal verwirrend sein kann.https://glot.io/snippets/f7dhw4kmju
quelle
IMHO Mark Elliots beste Lösung für dieses Problem. Wenn Sie komplexere Vergleichsoperationen zwischen Array-Elementen durchführen müssen UND PHP 5.3 verwenden, können Sie auch an Folgendes denken:
Dies beruht auf einer Schließung; Die Vergleichsfunktion kann viel leistungsfähiger werden. Viel Glück!
quelle
array_intersect () gibt ein Array zurück, das alle Werte von array1 enthält, die in allen Argumenten vorhanden sind. Beachten Sie, dass die Schlüssel erhalten bleiben.
Gibt ein Array zurück, das alle Werte in Array1 enthält, deren Werte in allen Parametern vorhanden sind.
leer () - Bestimmen Sie, ob eine Variable leer ist
Gibt FALSE zurück, wenn var vorhanden ist und einen nicht leeren Wert ungleich Null hat. Andernfalls wird TRUE zurückgegeben.
quelle