max()
Aprenda sobre a função max() no PHP, usada para encontrar o maior valor em um array ou em um conjunto de valores.
A função max() do PHP retorna o maior valor de uma lista de argumentos ou de um único array. É uma das formas mais comuns de encontrar o máximo sem precisar escrever um loop manualmente. Este capítulo aborda os dois estilos de chamada, como valores de diferentes tipos são comparados, os casos especiais que costumam causar confusão e quando usar max() em vez de uma alternativa.
Sintaxe
max() aceita duas formas distintas de chamada:
// Form 1: two or more values
max(mixed $value1, mixed $value2, mixed ...$values): mixed
// Form 2: a single array
max(array $value_array): mixedEm ambas as formas, o tipo de retorno corresponde ao tipo do valor que "vence" a comparação — passe inteiros e você receberá um inteiro de volta; passe strings e receberá uma string.
Encontrando o Maior Valor em um Array
Quando você passa um único array, max() retorna seu maior elemento:
Isso também funciona com arrays associativos. As chaves são ignoradas; apenas os valores são comparados, e o valor (não a chave) é retornado:
<?php
$prices = ["apple" => 1.20, "pear" => 0.95, "mango" => 2.40];
echo max($prices); // 2.4
?>Comparando um Conjunto de Valores
Se você já tem variáveis separadas, passe-as diretamente em vez de construir um array. Esta forma aceita qualquer 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
?>Isso é útil para limitar um número a um valor mínimo, um padrão frequente em paginação e manipulação de formulários:
<?php
$requestedPage = -3;
// Never let the page number drop below 1
$page = max(1, $requestedPage);
echo $page; // 1
?>Como max() Compara Valores
max() usa as regras de comparação padrão do PHP, portanto o resultado depende dos tipos envolvidos.
- Números são comparados numericamente:
max(2, 10)é10. - Strings são comparadas alfabeticamente (e com distinção entre maiúsculas e minúsculas — letras maiúsculas aparecem antes das minúsculas):
max("apple", "banana", "cherry")é"cherry". - String e número misturados: uma string não numérica é tratada como maior que
0no PHP 8, entãomax(0, "hello")retorna"hello". Evite misturar tipos quando possível — as regras são fáceis de interpretar errado. - Arrays são comparados primeiro pelo comprimento, depois elemento por elemento, e um array sempre é considerado maior que um 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 Especiais e Armadilhas
- Array vazio:
max([])lança umValueErrorno PHP 8 (emitia um aviso e retornavafalseno PHP 7). Verifique se a entrada não está vazia antes de chamá-la. - Um único argumento não-array é inválido —
max(5)gera um erro. Usemax(5, $other)oumax([5]). - Valores
NANtornam o resultado imprevisível; filtre-os primeiro. - Empates retornam o primeiro valor vencedor encontrado, então o resultado é estável, mas a chave original é perdida.
Funções Relacionadas
min()— a função oposta, retorna o menor valor.sort()— ordena um array inteiro quando você precisa de todos os elementos ordenados, não apenas o extremo.array_sum()— soma todos os elementos.count()— conta os elementos, útil para protegermax()contra arrays vazios.
Conclusão
max() é a forma concisa e legível de extrair o maior valor de um conjunto de argumentos ou de um array, e também serve como um limitador limpo (max(1, $n)). Mantenha os valores do mesmo tipo, proteja-se contra arrays vazios no PHP 8 e recorra a min() quando precisar do outro extremo do intervalo.