min()
Découvrez la fonction min() en PHP, utilisée pour trouver la valeur la plus basse dans un tableau ou un ensemble de valeurs.
La fonction min() en PHP retourne la valeur la plus basse d'une liste d'arguments ou d'un seul tableau. C'est une fonction mathématique intégrée, ce qui signifie que vous n'avez jamais besoin d'écrire votre propre boucle pour rechercher l'élément le plus petit. Cette page couvre les deux styles d'appel, la façon dont min() compare différents types de données, et les cas limites qui piègent les développeurs.
Syntaxe
min() accepte deux signatures d'appel distinctes :
// 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): mixedDans les deux cas, la valeur de retour est l'élément réel qui était le plus bas (avec son type d'origine), pas une copie ni un index.
Passer un seul tableau
L'utilisation la plus courante consiste à passer un seul tableau à min() et à le laisser trouver l'élément le plus petit :
min() parcourt tout le tableau et retourne l'élément le plus petit — ici 1.
Passer plusieurs arguments
Vous pouvez également passer des valeurs directement comme arguments séparés. C'est pratique lorsque les nombres ne sont pas déjà regroupés dans un tableau :
<?php
echo min(2, 3, 1, 6, 7); // 1
?>Les deux formes produisent le même résultat ; choisissez celle qui correspond le mieux aux données dont vous disposez déjà.
Comparer des chaînes de caractères
min() n'est pas limitée aux nombres. Avec des chaînes de caractères, elle utilise les règles de comparaison standard de PHP, donc les mots simples sont triés alphabétiquement :
<?php
echo min("apple", "banana", "cherry"); // apple
?>"apple" est retourné car il vient en premier alphabétiquement.
Comment les types mixtes sont comparés
Lorsque les valeurs sont de types différents, min() s'appuie sur les opérateurs de comparaison de PHP. Depuis PHP 8, un nombre comparé à une chaîne non numérique est comparé en tant que chaîne, ce qui a modifié certains résultats par rapport aux versions antérieures :
<?php
var_dump(min(0, "hello")); // int(0) (PHP 8+)
?>Si vous mélangez délibérément des types, soyez explicite sur ce que vous attendez — les comparaisons entre types sont une source courante de bugs subtils. En cas de doute, normalisez d'abord vos données vers un seul type.
Nombres négatifs et flottants
min() gère les nombres négatifs et les flottants exactement comme vous vous y attendriez, et elle préserve le type de la valeur qu'elle retourne :
<?php
echo min(-10, 0, 10); // -10
var_dump(min(1.5, 2, 3)); // float(1.5) — the return keeps its float type
?>Comparer des tableaux
Si chaque argument est lui-même un tableau, min() les compare : les tableaux avec moins d'éléments sont considérés comme plus petits, et les tableaux de longueur égale sont comparés élément par élément de gauche à droite :
<?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]
?>Piège : les tableaux vides
Appeler min() sur un tableau vide lève une ValueError en PHP 8 (dans les versions antérieures, cela générait un avertissement et retournait false). Protégez-vous toujours contre les entrées vides :
<?php
$values = [];
$lowest = empty($values) ? null : min($values);
var_dump($lowest); // NULL
?>Quand utiliser min()
- Trouver le prix le moins cher, la date la plus ancienne (sous forme d'horodatage), ou la mesure la plus petite dans un ensemble de données.
- Limiter une valeur à une borne supérieure :
min($value, $maxAllowed)empêche que$valuedépasse$maxAllowed. - Chaque fois que vous écririez autrement une boucle uniquement pour suivre l'élément le plus petit.
Pour l'opération inverse, voir max(). Pour en savoir plus sur les structures de données sur lesquelles min() opère, consultez PHP Arrays et Sorting Arrays.
Conclusion
min() est un outil petit mais fréquemment utilisé : passez-lui un tableau ou une liste de valeurs et elle retourne la plus basse, en conservant le type d'origine. Retenez les deux styles d'appel, faites attention aux comparaisons entre types, et protégez-vous contre les tableaux vides, et elle vous évitera d'écrire des boucles de comparaison manuelles.