min()
Scopri la funzione min() in PHP: come trovare il valore più basso in un array o in un insieme di valori.
La funzione min() in PHP restituisce il valore più basso da un elenco di argomenti o da un singolo array. È una funzione matematica integrata, quindi non è mai necessario scrivere un ciclo personalizzato per trovare l'elemento più piccolo. Questa pagina illustra entrambi gli stili di chiamata, il modo in cui min() confronta diversi tipi di dati e i casi limite più insidiosi.
Sintassi
min() accetta due firme di chiamata distinte:
// 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): mixedIn entrambi i casi il valore restituito è l'elemento effettivo che risultava il più basso (con il suo tipo originale), non una copia né un indice.
Passare un singolo array
L'utilizzo più comune consiste nel passare a min() un solo array e lasciare che trovi l'elemento più piccolo:
min() scorre l'intero array e restituisce l'elemento più piccolo — in questo caso 1.
Passare più argomenti
È possibile passare i valori direttamente come argomenti separati. Questo è comodo quando i numeri non sono già raccolti in un array:
<?php
echo min(2, 3, 1, 6, 7); // 1
?>Entrambe le forme producono lo stesso risultato; scegli quella più adatta ai dati che hai già a disposizione.
Confrontare stringhe
min() non è limitato ai numeri. Con le stringhe utilizza le regole di confronto standard di PHP, quindi le parole vengono ordinate alfabeticamente:
<?php
echo min("apple", "banana", "cherry"); // apple
?>Viene restituito "apple" perché viene prima in ordine alfabetico.
Come vengono confrontati tipi misti
Quando i valori sono di tipi diversi, min() si basa sugli operatori di confronto di PHP. A partire da PHP 8, un numero confrontato con una stringa non numerica viene confrontato come stringa, il che ha modificato alcuni risultati delle versioni precedenti:
<?php
var_dump(min(0, "hello")); // int(0) (PHP 8+)
?>Se mescoli tipi intenzionalmente, sii esplicito su ciò che ti aspetti — i confronti tra tipi diversi sono una fonte comune di bug sottili. In caso di dubbio, normalizza prima i dati a un unico tipo.
Numeri negativi e float
min() gestisce numeri negativi e float esattamente come ci si aspetterebbe, e preserva il tipo del valore che restituisce:
<?php
echo min(-10, 0, 10); // -10
var_dump(min(1.5, 2, 3)); // float(1.5) — the return keeps its float type
?>Confrontare array
Se ogni argomento è a sua volta un array, min() li confronta: gli array con meno elementi sono considerati più piccoli, mentre gli array di lunghezza uguale vengono confrontati elemento per elemento da sinistra a destra:
<?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]
?>Attenzione: array vuoti
Chiamare min() su un array vuoto genera un ValueError in PHP 8 (nelle versioni precedenti generava un avviso e restituiva false). Proteggi sempre il codice dagli input vuoti:
<?php
$values = [];
$lowest = empty($values) ? null : min($values);
var_dump($lowest); // NULL
?>Quando usare min()
- Per trovare il prezzo più basso, la data più antica (come timestamp) o la misura più piccola in un dataset.
- Per limitare un valore a un limite superiore:
min($value, $maxAllowed)garantisce che$valuenon superi mai$maxAllowed. - Ogni volta che altrimenti scriveresti un ciclo solo per tenere traccia dell'elemento più piccolo.
Per l'operazione opposta, vedi max(). Per saperne di più sulle strutture dati su cui opera min(), consulta PHP Arrays e Sorting Arrays.
Conclusione
min() è un helper piccolo ma usato frequentemente: passagli un array o un elenco di valori e restituisce il più basso, mantenendo il tipo originale. Ricorda i due stili di chiamata, fai attenzione ai confronti tra tipi diversi e proteggi il codice dagli array vuoti: ti eviterà di scrivere cicli di confronto manuali.