W3docs

max()

Découvrez la fonction max() en PHP, utilisée pour trouver la valeur la plus élevée dans un tableau ou un ensemble de valeurs.

La fonction PHP max() retourne la valeur la plus élevée d'une liste d'arguments ou d'un tableau unique. C'est l'un des moyens les plus courants de trouver un maximum sans écrire de boucle. Ce chapitre couvre les deux formes d'appel, la façon dont les valeurs de différents types sont comparées, les cas particuliers qui posent problème, et quand utiliser max() plutôt qu'une alternative.

Syntaxe

max() accepte deux formes d'appel distinctes :

// Form 1: two or more values
max(mixed $value1, mixed $value2, mixed ...$values): mixed

// Form 2: a single array
max(array $value_array): mixed

Dans les deux formes, le type de retour correspond au type de la valeur qui « gagne » la comparaison — passez des entiers et vous obtenez un entier, passez des chaînes et vous obtenez une chaîne.

Trouver la valeur la plus élevée dans un tableau

Lorsque vous passez un tableau unique, max() retourne son plus grand élément :

php— editable, runs on the server

Cela fonctionne également avec les tableaux associatifs. Les clés sont ignorées ; seules les valeurs sont comparées, et c'est la valeur (pas la clé) qui est retournée :

<?php
$prices = ["apple" => 1.20, "pear" => 0.95, "mango" => 2.40];

echo max($prices); // 2.4
?>

Comparer un ensemble de valeurs

Si vous avez déjà des variables séparées, passez-les directement plutôt que de construire un tableau. Cette forme accepte un nombre quelconque d'arguments :

<?php
echo max(10, 42, 7);        // 42
echo "\n";
echo max(3, 9, 9, 1);       // 9 — ties simply return the value
?>

C'est pratique pour limiter un nombre à une valeur plancher, un schéma fréquent dans la pagination et la gestion des formulaires :

<?php
$requestedPage = -3;

// Never let the page number drop below 1
$page = max(1, $requestedPage);

echo $page; // 1
?>

Comment max() compare les valeurs

max() utilise les règles de comparaison standard de PHP, donc le résultat dépend des types impliqués.

  • Nombres : comparaison numérique : max(2, 10) vaut 10.
  • Chaînes : comparaison alphabétique (sensible à la casse — les majuscules sont triées avant les minuscules) : max("apple", "banana", "cherry") vaut "cherry".
  • Mélange de chaîne et de nombre : une chaîne non numérique est traitée comme supérieure à 0 en PHP 8, donc max(0, "hello") retourne "hello". Évitez de mélanger les types quand vous le pouvez — les règles sont faciles à mal interpréter.
  • Tableaux : comparaison par longueur d'abord, puis élément par élément, et un tableau est toujours considéré comme supérieur à un scalaire.
<?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
?>

Cas particuliers et pièges

  • Tableau vide : max([]) lève une ValueError en PHP 8 (il émettait un avertissement et retournait false en PHP 7). Vérifiez que l'entrée n'est pas vide avant d'appeler la fonction.
  • Un seul argument non-tableau est invalide — max(5) génère une erreur. Utilisez max(5, $other) ou max([5]).
  • Les valeurs NAN rendent le résultat non fiable ; filtrez-les d'abord.
  • Les égalités retournent la première valeur gagnante rencontrée, donc le résultat est stable mais la clé d'origine est perdue.

Fonctions associées

  • min() — l'image miroir, retourne la valeur la plus basse.
  • sort() — trie un tableau entier lorsque vous avez besoin que chaque élément soit ordonné, pas seulement les extrêmes.
  • array_sum() — additionne tous les éléments.
  • count() — compte les éléments, utile pour protéger max() contre les tableaux vides.

Conclusion

max() est la façon concise et lisible d'extraire la valeur la plus élevée d'un ensemble d'arguments ou d'un tableau, et elle sert également de limitation propre (max(1, $n)). Gardez les valeurs du même type, protégez-vous contre les tableaux vides en PHP 8, et utilisez min() quand vous avez besoin de l'autre extrémité de la plage.

Pratique

Pratique
Que fait la fonction max() en PHP ?
Que fait la fonction max() en PHP ?
Was this page helpful?