max()
La funzione max() in PHP restituisce il valore più alto da un array o da un insieme di valori. Scopri sintassi, tipi e casi limite.
La funzione PHP max() restituisce il valore più alto da un elenco di argomenti o da un singolo array. È uno dei modi più comuni per trovare il massimo senza scrivere un ciclo manualmente. Questo capitolo tratta entrambe le forme di chiamata, come vengono confrontati i valori di tipo diverso, i casi limite che possono trarre in inganno e quando usare max() rispetto ad alternative.
Sintassi
max() accetta due distinte forme di chiamata:
// Form 1: two or more values
max(mixed $value1, mixed $value2, mixed ...$values): mixed
// Form 2: a single array
max(array $value_array): mixedIn entrambe le forme il tipo restituito corrisponde al tipo del valore che "vince" il confronto — se si passano interi si ottiene un intero, se si passano stringhe si ottiene una stringa.
Trovare il Valore Più Alto in un Array
Quando si passa un singolo array, max() restituisce il suo elemento più grande:
Funziona anche con gli array associativi. Le chiavi vengono ignorate; vengono confrontati solo i valori, e viene restituito il valore (non la chiave):
<?php
$prices = ["apple" => 1.20, "pear" => 0.95, "mango" => 2.40];
echo max($prices); // 2.4
?>Confrontare un Insieme di Valori
Se si hanno già variabili separate, è possibile passarle direttamente invece di costruire un array. Questa forma accetta un numero qualsiasi di argomenti:
<?php
echo max(10, 42, 7); // 42
echo "\n";
echo max(3, 9, 9, 1); // 9 — ties simply return the value
?>Questo è utile per limitare un numero a un valore minimo, un pattern frequente nella paginazione e nella gestione dei moduli:
<?php
$requestedPage = -3;
// Never let the page number drop below 1
$page = max(1, $requestedPage);
echo $page; // 1
?>Come max() Confronta i Valori
max() utilizza le regole di confronto standard di PHP, quindi il risultato dipende dai tipi coinvolti.
- Numeri vengono confrontati numericamente:
max(2, 10)restituisce10. - Stringhe vengono confrontate in ordine alfabetico (e con distinzione tra maiuscole e minuscole — le lettere maiuscole vengono ordinate prima di quelle minuscole):
max("apple", "banana", "cherry")restituisce"cherry". - Stringa e numero misti: una stringa non numerica viene trattata come maggiore di
0in PHP 8, quindimax(0, "hello")restituisce"hello". Evitare di mescolare i tipi quando possibile — le regole sono facili da fraintendere. - Array vengono confrontati prima per lunghezza, poi elemento per elemento, e un array conta sempre come maggiore di uno scalare.
<?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
?>Casi Limite e Insidie
- Array vuoto:
max([])genera unValueErrorin PHP 8 (in PHP 7 emetteva un avviso e restituivafalse). Verificare che l'input non sia vuoto prima di chiamarla. - Un singolo argomento non array non è valido —
max(5)genera un errore. Usaremax(5, $other)oppuremax([5]). - Valori
NANrendono il risultato inaffidabile; filtrarli prima. - Parità restituisce il primo valore vincente incontrato, quindi il risultato è stabile ma la chiave originale viene persa.
Funzioni Correlate
min()— l'immagine speculare, restituisce il valore più basso.sort()— ordina un intero array quando si ha bisogno di tutti gli elementi ordinati, non solo dell'estremo.array_sum()— somma tutti gli elementi.count()— conta gli elementi, utile per proteggeremax()dagli array vuoti.
Conclusione
max() è il modo conciso e leggibile per estrarre il valore più alto da un insieme di argomenti o da un array, e funziona anche come clamp pulito (max(1, $n)). Mantenere i valori dello stesso tipo, proteggersi dagli array vuoti in PHP 8 e usare min() quando si ha bisogno dell'altro estremo dell'intervallo.