Signatur
Beschreibung
array_any() iteriert über alle Elemente des übergebenen Arrays und ruft für jedes Element die Callback-Funktion auf. Sobald der Callback für ein Element einen Wert zurückgibt, der als true gewertet wird (truthy), stoppt die Iteration und die Funktion gibt true zurück. Liefert der Callback für kein einziges Element einen truthy-Wert, gibt array_any() false zurück.
Die Funktion ist besonders nützlich, wenn man prüfen möchte, ob wenigstens ein Element einer Liste eine Bedingung erfüllt – z. B. ob ein Benutzer mindestens eine bestimmte Rolle besitzt oder ob in einer Produktliste mindestens ein Artikel vergriffen ist. Sie ersetzt typische foreach-Schleifen mit vorzeitigem break durch einen klar lesbaren Einzeiler.
Der Callback erhält als erstes Argument den Wert des aktuellen Elements. Im Unterschied zu array_filter() wird das Array nicht gefiltert, sondern lediglich ein boolesches Ergebnis geliefert. Die Funktion ist das Gegenstück zu array_all(), das prüft, ob alle Elemente die Bedingung erfüllen.
Bei einem leeren Array gibt array_any() stets false zurück, da kein Element die Bedingung erfüllen kann.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array | Das zu prüfende Array. Sowohl numerische als auch assoziative Arrays werden unterstützt. | |
| $callback Pflicht | callable | Eine Callback-Funktion, die für jedes Element aufgerufen wird. Sie erhält den Wert des Elements als erstes Argument und soll einen Wahrheitswert (true/false) zurückgeben. |
Rückgabewert
true zurück, wenn der Callback für mindestens ein Element des Arrays einen truthy-Wert liefert. Gibt false zurück, wenn kein Element die Bedingung erfüllt oder das Array leer ist.Beispiele
Prüfen, ob mindestens eine Zahl negativ ist
<?php
$zahlen = [4, 7, -1, 3, 9];
$hatNegative = array_any($zahlen, fn(int $n) => $n < 0);
echo $hatNegative ? 'Ja, es gibt negative Zahlen.' : 'Keine negativen Zahlen.';
Prüfen, ob ein Benutzer mindestens eine Admin-Rolle besitzt
<?php
$rollen = ['editor', 'moderator', 'admin'];
$istAdmin = array_any($rollen, fn(string $rolle) => $rolle === 'admin');
if ($istAdmin) {
echo 'Zugriff gewährt: Benutzer ist Administrator.';
} else {
echo 'Zugriff verweigert: Keine Admin-Rolle gefunden.';
}
Leeres Array ergibt immer false
<?php
$leer = [];
$ergebnis = array_any($leer, fn($v) => $v > 0);
var_dump($ergebnis);
// Wichtig · Fallstricke
Neu in PHP 8.4.0: array_any() wurde zusammen mit array_all() eingeführt. In älteren PHP-Versionen (vor 8.4) muss diese Logik manuell mit einer foreach-Schleife oder über eine Kombination aus array_filter() und count() nachgebildet werden.
Der Callback erhält nur den Wert des Elements, nicht den Schlüssel. Falls der Schlüssel im Callback benötigt wird, muss eine klassische Schleife verwendet werden.
Die Funktion bricht die Iteration beim ersten positiven Treffer ab (short-circuit evaluation), was bei großen Arrays effizient ist.