max()
Die Funktion max() in PHP gibt den höchsten Wert aus einem Array oder einer Liste von Argumenten zurück. Hier erfahren Sie alles zur Verwendung.
Die PHP-Funktion max() gibt den höchsten Wert aus einer Liste von Argumenten oder aus einem einzelnen Array zurück. Sie ist eine der gängigsten Methoden, um ein Maximum zu finden, ohne selbst eine Schleife schreiben zu müssen. Dieses Kapitel behandelt beide Aufrufformen, wie Werte unterschiedlicher Typen verglichen werden, die Sonderfälle, die häufig zu Fehlern führen, und wann max() gegenüber einer Alternative vorzuziehen ist.
Syntax
max() akzeptiert zwei verschiedene Aufrufformen:
// Form 1: two or more values
max(mixed $value1, mixed $value2, mixed ...$values): mixed
// Form 2: a single array
max(array $value_array): mixedIn beiden Formen entspricht der Rückgabetyp dem Typ des Wertes, der den Vergleich „gewinnt" — übergeben Sie Integer, erhalten Sie einen Integer zurück, übergeben Sie Strings, erhalten Sie einen String.
Den höchsten Wert in einem Array finden
Wenn Sie ein einzelnes Array übergeben, gibt max() dessen größtes Element zurück:
Dies funktioniert auch bei assoziativen Arrays. Die Schlüssel werden ignoriert; nur die Werte werden verglichen, und der Wert (nicht der Schlüssel) wird zurückgegeben:
<?php
$prices = ["apple" => 1.20, "pear" => 0.95, "mango" => 2.40];
echo max($prices); // 2.4
?>Eine Menge von Werten vergleichen
Wenn Sie bereits separate Variablen haben, übergeben Sie diese direkt, anstatt ein Array zu erstellen. Diese Form nimmt eine beliebige Anzahl von Argumenten entgegen:
<?php
echo max(10, 42, 7); // 42
echo "\n";
echo max(3, 9, 9, 1); // 9 — ties simply return the value
?>Dies ist praktisch, um eine Zahl auf einen Mindestwert zu begrenzen — ein häufiges Muster bei der Paginierung und der Formularverarbeitung:
<?php
$requestedPage = -3;
// Never let the page number drop below 1
$page = max(1, $requestedPage);
echo $page; // 1
?>Wie max() Werte vergleicht
max() verwendet PHPs Standard-Vergleichsregeln, daher hängt das Ergebnis von den beteiligten Typen ab.
- Zahlen werden numerisch verglichen:
max(2, 10)ergibt10. - Strings werden alphabetisch verglichen (und Groß-/Kleinschreibung beachtet — Großbuchstaben werden vor Kleinbuchstaben einsortiert):
max("apple", "banana", "cherry")ergibt"cherry". - Gemischte Strings und Zahlen: Ein nicht-numerischer String wird in PHP 8 als größer als
0behandelt, daher gibtmax(0, "hello")"hello"zurück. Vermeiden Sie nach Möglichkeit das Mischen von Typen — die Regeln lassen sich leicht falsch interpretieren. - Arrays werden zunächst nach Länge verglichen, dann Element für Element, und ein Array gilt stets als größer als ein skalarer Wert.
<?php
// Arrays of equal length: compared element by element
var_dump(max([1, 5], [2, 1]));
// Returns [2, 1] because the first element 2 > 1
?>Sonderfälle und Fallstricke
- Leeres Array:
max([])löst in PHP 8 einenValueErroraus (in PHP 7 wurde eine Warnung ausgegeben undfalsezurückgegeben). Schützen Sie sich vor leerer Eingabe, bevor Sie die Funktion aufrufen. - Ein einzelnes Nicht-Array-Argument ist ungültig —
max(5)löst einen Fehler aus. Verwenden Siemax(5, $other)odermax([5]). NAN-Werte machen das Ergebnis unzuverlässig; filtern Sie diese vorher heraus.- Gleichstände geben den zuerst gefundenen Gewinnerwert zurück, das Ergebnis ist also stabil, aber der ursprüngliche Schlüssel geht verloren.
Verwandte Funktionen
min()— das Gegenstück, gibt den niedrigsten Wert zurück.sort()— sortiert ein gesamtes Array, wenn Sie alle Elemente geordnet benötigen, nicht nur den Extremwert.array_sum()— addiert alle Elemente zusammen.count()— zählt Elemente, nützlich zum Schutz vonmax()vor leeren Arrays.
Fazit
max() ist der prägnante, lesbare Weg, den höchsten Wert aus einer Menge von Argumenten oder einem Array zu extrahieren, und dient gleichzeitig als saubere Begrenzungsfunktion (max(1, $n)). Halten Sie die Werte vom gleichen Typ, schützen Sie sich in PHP 8 vor leeren Arrays, und greifen Sie auf min() zurück, wenn Sie das andere Ende des Bereichs benötigen.