Die Funktion max() gibt den größten Wert aus einem Array oder einer Liste von Parametern zurück. Sie eignet sich überall dort, wo der höchste Wert aus einer Menge von Zahlen gebraucht wird, zum Beispiel bei Highscores, Messwerten oder Preisvergleichen.
Grundlegende Verwendung mit Arrays
max() akzeptiert ein Array als Parameter und gibt das größte enthaltene Element zurück:
<?php
$temperaturen = [18, 23, 31, 27, 19];
echo max($temperaturen); // 31
?>
PHP vergleicht die Werte numerisch, solange das Array Zahlen enthält. Die Reihenfolge der Elemente spielt dabei keine Rolle.
max() mit mehreren Einzelwerten
Statt eines Arrays lassen sich auch einzelne Werte direkt übergeben:
<?php
echo max(5, 12, 3); // 12
echo max(-10, -3, -7); // -3
?>
Das ist praktisch, wenn die Werte nicht bereits in einem Array vorliegen, sondern aus verschiedenen Variablen stammen.
Praxisbeispiel: Highscore ermitteln
Ein typischer Anwendungsfall ist das Finden des besten Ergebnisses aus einer Liste von Spielständen:
<?php
$punkte = [
'Anna' => 4200,
'Ben' => 5800,
'Clara' => 3900
];
$hoechste = max($punkte);
$spieler = array_search($hoechste, $punkte);
echo $spieler . ' hat den Highscore: ' . $hoechste;
/* Ausgabe: Ben hat den Highscore: 5800 */
?>
Mit array_search() lässt sich zusätzlich der Schlüssel (hier der Spielername) zum höchsten Wert finden.
Gegenstück: min()
Die Funktion min() arbeitet identisch, gibt aber den kleinsten Wert zurück:
<?php
$preise = [29.99, 14.50, 42.00, 8.95];
echo 'Günstigster Preis: ' . min($preise);
/* Ausgabe: Günstigster Preis: 8.95 */
echo 'Teuerster Preis: ' . max($preise);
/* Ausgabe: Teuerster Preis: 42 */
?>
Beide Funktionen lassen sich gut kombinieren, um beispielsweise die Spanne zwischen dem kleinsten und größten Wert zu berechnen.
Verhalten bei leerem Array
Wird max() ein leeres Array übergeben, gibt PHP seit Version 8.0 einen ValueError aus. In älteren Versionen wurde stattdessen null zurückgegeben. Es empfiehlt sich daher, vorher zu prüfen, ob das Array Elemente enthält:
<?php
$werte = [];
if (!empty($werte)) {
echo max($werte);
} else {
echo 'Keine Werte vorhanden.';
}
?>
So wird der Fehler vermieden und der Sonderfall sauber behandelt.