max()
La función max() de PHP devuelve el valor más alto de un array o de un conjunto de valores. Aprende su sintaxis, comparaciones y casos especiales.
La función max() de PHP devuelve el valor más alto de una lista de argumentos o de un único array. Es una de las formas más habituales de encontrar un máximo sin escribir un bucle propio. Este capítulo cubre ambas formas de llamada, cómo se comparan valores de distintos tipos, los casos límite que suelen causar confusión y cuándo conviene usar max() en lugar de una alternativa.
Sintaxis
max() acepta dos formas de llamada distintas:
// Form 1: two or more values
max(mixed $value1, mixed $value2, mixed ...$values): mixed
// Form 2: a single array
max(array $value_array): mixedEn ambas formas, el tipo de retorno coincide con el tipo del valor que "gana" la comparación: si se pasan enteros se obtiene un entero, si se pasan cadenas se obtiene una cadena.
Encontrar el Valor Más Alto en un Array
Cuando se pasa un único array, max() devuelve su elemento más grande:
Esto también funciona con arrays asociativos. Las claves se ignoran; solo se comparan los valores, y se devuelve el valor (no la clave):
<?php
$prices = ["apple" => 1.20, "pear" => 0.95, "mango" => 2.40];
echo max($prices); // 2.4
?>Comparar un Conjunto de Valores
Si ya tienes variables separadas, pásalas directamente en lugar de construir un array. Esta forma acepta cualquier número de argumentos:
<?php
echo max(10, 42, 7); // 42
echo "\n";
echo max(3, 9, 9, 1); // 9 — ties simply return the value
?>Esto resulta útil para limitar un número a un mínimo, patrón frecuente en paginación y manejo de formularios:
<?php
$requestedPage = -3;
// Never let the page number drop below 1
$page = max(1, $requestedPage);
echo $page; // 1
?>Cómo Compara Valores max()
max() utiliza las reglas de comparación estándar de PHP, por lo que el resultado depende de los tipos involucrados.
- Números se comparan numéricamente:
max(2, 10)es10. - Cadenas se comparan alfabéticamente (con distinción entre mayúsculas y minúsculas — las mayúsculas se ordenan antes que las minúsculas):
max("apple", "banana", "cherry")es"cherry". - Mezcla de cadena y número: en PHP 8, una cadena no numérica se trata como mayor que
0, por lo quemax(0, "hello")devuelve"hello". Evita mezclar tipos cuando sea posible, ya que las reglas son fáciles de malinterpretar. - Arrays se comparan primero por longitud, luego elemento a elemento, y un array siempre se considera mayor que un escalar.
<?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
?>Casos Límite y Advertencias
- Array vacío:
max([])lanza unValueErroren PHP 8 (en PHP 7 emitía una advertencia y devolvíafalse). Protege la entrada vacía antes de llamar a la función. - Un único argumento que no es array no es válido —
max(5)genera un error. Usamax(5, $other)omax([5]). - Valores
NANhacen que el resultado sea poco fiable; fíltralos antes. - Empates devuelven el primer valor ganador encontrado, por lo que el resultado es estable pero se pierde la clave original.
Funciones Relacionadas
min()— la imagen especular, devuelve el valor más bajo.sort()— ordena un array completo cuando necesitas todos los elementos ordenados, no solo el extremo.array_sum()— suma todos los elementos.count()— cuenta los elementos, útil para protegermax()de arrays vacíos.
Conclusión
max() es la forma concisa y legible de obtener el valor más alto de un conjunto de argumentos o de un array, y también sirve como limitador limpio (max(1, $n)). Mantén los valores del mismo tipo, protege contra arrays vacíos en PHP 8 y recurre a min() cuando necesites el otro extremo del rango.