min()
A função min() no PHP retorna o menor valor de um array ou de uma lista de argumentos. Veja a sintaxe, exemplos e casos especiais.
A função min() no PHP retorna o menor valor de uma lista de argumentos ou de um único array. É uma função matemática nativa, portanto você nunca precisa escrever seu próprio loop para encontrar o menor item. Esta página aborda os dois estilos de chamada, como min() compara diferentes tipos de dados e os casos especiais que costumam causar confusão.
Sintaxe
min() aceita duas assinaturas de chamada 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): mixedEm ambos os casos, o valor retornado é o próprio elemento que era o menor (com seu tipo original), não uma cópia ou um índice.
Passando um único array
O uso mais comum é passar um array para min() e deixar que ela encontre o menor elemento:
min() percorre todo o array e retorna o menor elemento — neste caso, 1.
Passando vários argumentos
Você também pode passar valores diretamente como argumentos separados. Isso é útil quando os números ainda não estão reunidos em um array:
<?php
echo min(2, 3, 1, 6, 7); // 1
?>Ambas as formas produzem o mesmo resultado; escolha a que melhor se adapta aos dados que você já tem.
Comparando strings
min() não se limita a números. Com strings, ela utiliza as regras de comparação padrão do PHP, portanto palavras simples são ordenadas alfabeticamente:
<?php
echo min("apple", "banana", "cherry"); // apple
?>"apple" é retornada porque vem primeiro em ordem alfabética.
Como tipos mistos são comparados
Quando os valores são de tipos diferentes, min() depende dos operadores de comparação do PHP. A partir do PHP 8, um número comparado com uma string não numérica é comparado como string, o que alterou alguns resultados de versões anteriores:
<?php
var_dump(min(0, "hello")); // int(0) (PHP 8+)
?>Se você misturar tipos intencionalmente, seja explícito sobre o que espera — comparações entre tipos são uma fonte comum de bugs sutis. Na dúvida, normalize seus dados para um único tipo antes.
Números negativos e floats
min() lida com números negativos e floats exatamente como esperado, e preserva o tipo do valor que retorna:
<?php
echo min(-10, 0, 10); // -10
var_dump(min(1.5, 2, 3)); // float(1.5) — the return keeps its float type
?>Comparando arrays
Se todos os argumentos forem arrays, min() os compara: arrays com menos elementos são considerados menores, e arrays de tamanho igual são comparados elemento por elemento da esquerda para a direita:
<?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]
?>Atenção: arrays vazios
Chamar min() em um array vazio lança um ValueError no PHP 8 (nas versões anteriores gerava um aviso e retornava false). Sempre proteja seu código contra entradas vazias:
<?php
$values = [];
$lowest = empty($values) ? null : min($values);
var_dump($lowest); // NULL
?>Quando usar min()
- Encontrar o menor preço, a data mais antiga (como timestamp) ou a menor medida em um conjunto de dados.
- Limitar um valor a um máximo:
min($value, $maxAllowed)garante que$valuenunca ultrapasse$maxAllowed. - Sempre que você escreveria um loop apenas para rastrear o menor item.
Para a operação inversa, veja max(). Para saber mais sobre as estruturas de dados em que min() opera, veja PHP Arrays e Sorting Arrays.
Conclusão
min() é um auxiliar pequeno, mas muito utilizado: passe-lhe um array ou uma lista de valores e ela retorna o menor, mantendo o tipo original. Lembre-se dos dois estilos de chamada, fique atento às comparações entre tipos diferentes e proteja-se contra arrays vazios — assim você evita escrever loops de comparação manual.