min()
Aprende a usar la función min() en PHP para encontrar el valor más bajo en un array o en un conjunto de valores.
La función min() en PHP devuelve el valor más bajo de una lista de argumentos o de un único array. Es una función matemática integrada, por lo que nunca necesitas escribir tu propio bucle para buscar el elemento más pequeño. Esta página cubre ambos estilos de llamada, cómo min() compara diferentes tipos de datos y los casos extremos que suelen causar problemas.
Sintaxis
min() acepta dos firmas de llamada distintas:
// 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): mixedEn ambos casos, el valor de retorno es el elemento real que era el más bajo (con su tipo original), no una copia ni un índice.
Pasar un único array
El uso más común es pasarle a min() un array y dejar que encuentre el elemento más pequeño:
min() recorre todo el array y devuelve el elemento más pequeño — en este caso 1.
Pasar varios argumentos
También puedes pasar valores directamente como argumentos separados. Esto es útil cuando los números no están ya agrupados en un array:
<?php
echo min(2, 3, 1, 6, 7); // 1
?>Ambas formas producen el mismo resultado; elige la que mejor se adapte a los datos que ya tienes.
Comparar cadenas
min() no se limita a números. Con cadenas utiliza las reglas de comparación estándar de PHP, por lo que las palabras simples se ordenan alfabéticamente:
<?php
echo min("apple", "banana", "cherry"); // apple
?>Se devuelve "apple" porque es la primera en orden alfabético.
Cómo se comparan los tipos mixtos
Cuando los valores son de tipos diferentes, min() se basa en los operadores de comparación de PHP. Desde PHP 8, un número comparado con una cadena no numérica se compara como cadena, lo que cambió algunos resultados anteriores:
<?php
var_dump(min(0, "hello")); // int(0) (PHP 8+)
?>Si mezclas tipos intencionalmente, sé explícito sobre lo que esperas — las comparaciones entre tipos son una fuente habitual de errores sutiles. En caso de duda, normaliza primero tus datos a un único tipo.
Números negativos y flotantes
min() maneja números negativos y flotantes exactamente como esperarías, y preserva el tipo del valor que devuelve:
<?php
echo min(-10, 0, 10); // -10
var_dump(min(1.5, 2, 3)); // float(1.5) — the return keeps its float type
?>Comparar arrays
Si cada argumento es en sí mismo un array, min() los compara: los arrays con menos elementos se consideran menores, y los arrays de igual longitud se comparan elemento por elemento de izquierda a derecha:
<?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]
?>Precaución: arrays vacíos
Llamar a min() con un array vacío lanza un ValueError en PHP 8 (en versiones anteriores generaba una advertencia y devolvía false). Siempre protege tu código ante entradas vacías:
<?php
$values = [];
$lowest = empty($values) ? null : min($values);
var_dump($lowest); // NULL
?>Cuándo usar min()
- Encontrar el precio más bajo, la fecha más temprana (como timestamp) o la medida más pequeña en un conjunto de datos.
- Limitar un valor a un límite superior:
min($value, $maxAllowed)evita que$valuesupere$maxAllowed. - Siempre que de otro modo escribirías un bucle solo para rastrear el elemento más pequeño.
Para la operación contraria, consulta max(). Para aprender más sobre las estructuras de datos en las que opera min(), consulta PHP Arrays y Sorting Arrays.
Conclusión
min() es una función pequeña pero muy utilizada: pásale un array o una lista de valores y devolverá el más bajo, conservando el tipo original. Recuerda los dos estilos de llamada, ten cuidado con las comparaciones entre tipos distintos y protege tu código ante arrays vacíos, y te ahorrará tener que escribir bucles de comparación manuales.