min()
Die Funktion min() in PHP gibt den kleinsten Wert aus einem Array oder einer Liste von Argumenten zurück.
Die Funktion min() in PHP gibt den niedrigsten Wert aus einer Liste von Argumenten oder aus einem einzelnen Array zurück. Sie ist eine eingebaute Mathematikfunktion, sodass Sie nie eine eigene Schleife schreiben müssen, um nach dem kleinsten Element zu suchen. Diese Seite behandelt beide Aufrufstile, wie min() verschiedene Datentypen vergleicht, und die Sonderfälle, die häufig zu Problemen führen.
Syntax
min() akzeptiert zwei verschiedene Aufruf-Signaturen:
// 1. A single array — returns its lowest element
min(array $values): mixed
// 2. Two or more separate arguments — returns the lowest of them
min(mixed $value1, mixed $value2, mixed ...$values): mixedIn beiden Fällen ist der Rückgabewert das tatsächliche Element, das am niedrigsten war (mit seinem ursprünglichen Typ), keine Kopie und kein Index.
Ein einzelnes Array übergeben
Die häufigste Verwendung besteht darin, min() ein Array zu übergeben und das kleinste Element zu finden:
min() durchläuft das gesamte Array und gibt das kleinste Element zurück — hier 1.
Mehrere Argumente übergeben
Sie können Werte auch direkt als separate Argumente übergeben. Das ist praktisch, wenn die Zahlen noch nicht in einem Array gesammelt sind:
<?php
echo min(2, 3, 1, 6, 7); // 1
?>Beide Formen liefern dasselbe Ergebnis; wählen Sie die Form, die zu Ihren vorhandenen Daten passt.
Strings vergleichen
min() ist nicht auf Zahlen beschränkt. Bei Strings verwendet die Funktion PHPs standardmäßige Vergleichsregeln, sodass einfache Wörter alphabetisch sortiert werden:
<?php
echo min("apple", "banana", "cherry"); // apple
?>"apple" wird zurückgegeben, weil es alphabetisch an erster Stelle steht.
Wie gemischte Typen verglichen werden
Wenn die Werte unterschiedliche Typen haben, stützt sich min() auf PHPs Vergleichsoperatoren. Seit PHP 8 wird eine Zahl, die mit einem nicht-numerischen string verglichen wird, als string verglichen, was einige ältere Ergebnisse geändert hat:
<?php
var_dump(min(0, "hello")); // int(0) (PHP 8+)
?>Wenn Sie Typen absichtlich mischen, seien Sie explizit darüber, was Sie erwarten — Vergleiche über Typen hinweg sind eine häufige Quelle subtiler Fehler. Im Zweifelsfall normalisieren Sie Ihre Daten zuerst auf einen Typ.
Negative Zahlen und Floats
min() behandelt negative Zahlen und Floats genau so, wie Sie es erwarten würden, und bewahrt den Typ des zurückgegebenen Werts:
<?php
echo min(-10, 0, 10); // -10
var_dump(min(1.5, 2, 3)); // float(1.5) — the return keeps its float type
?>Arrays vergleichen
Wenn jedes Argument selbst ein Array ist, vergleicht min() diese: Arrays mit weniger Elementen gelten als kleiner, und Arrays gleicher Länge werden von links nach rechts elementweise verglichen:
<?php
// Same length, so compared element by element: 4 < 5 at index 1
var_dump(min([2, 4, 8], [2, 5, 1]));
// Returns: [2, 4, 8]
?>Fallstrick: Leere Arrays
Der Aufruf von min() auf einem leeren Array wirft in PHP 8 einen ValueError (in früheren Versionen wurde eine Warnung ausgegeben und false zurückgegeben). Schützen Sie sich immer gegen leere Eingaben:
<?php
$values = [];
$lowest = empty($values) ? null : min($values);
var_dump($lowest); // NULL
?>Wann man min() verwenden sollte
- Den günstigsten Preis, das früheste Datum (als Zeitstempel) oder die kleinste Messung in einem Datensatz finden.
- Einen Wert nach oben begrenzen:
min($value, $maxAllowed)lässt$valuenie$maxAllowedüberschreiten. - Immer dann, wenn Sie sonst eine Schleife schreiben würden, nur um das kleinste Element zu verfolgen.
Für die umgekehrte Operation, siehe max(). Um mehr über die Arbeit mit den Datenstrukturen zu erfahren, auf denen min() operiert, siehe PHP Arrays und Sorting Arrays.
Fazit
min() ist ein kleiner, aber häufig verwendeter Helfer: Übergeben Sie ein Array oder eine Liste von Werten, und die Funktion gibt den niedrigsten zurück, wobei der ursprüngliche Typ erhalten bleibt. Denken Sie an die beiden Aufrufstile, achten Sie auf typübergreifende Vergleiche und schützen Sie sich vor leeren Arrays — dann ersparen Sie sich das Schreiben manueller Vergleichsschleifen.