Ordinare un array monodimensionale in PHP
Per ordinare gli array monodimensionali PHP ci viene incontro fornendoci moltissime funzioni.
La più basilare è sort che ci permette di ordinare un array dal valore più piccolo a quello più grande riassegnando le chiavi. Questa funzione restituisce TRUE o FALSE in base al successo o meno dell'ordinamento e accetta due parametri. Il primo parametro è l'array che vogliamo ordinare e il secondo, facoltativo, è il metodo di ordinamento che può avere tre valori: SORT_REGULAR per comparare gli elementi in modo normale, SORT_NUMERIC per compararli in modo numerico e SORT_STRING per compararli come stringhe.
Ecco un esempio:
Dopo l'utilizzo di questa funzione potrebbe essere necessario azzerare il contatore utilizzando la funzione reset.
Le seguenti funzioni si utilizzano alla stesso modo di sort ma servono per ordinare gli array in modo diverso:
Per ordinare un array in modo naturale si possono usare le funzioni natsort e natcasesort. Entrambe ordinano in ordine crescente e mantengono le chiavi con l'unica differenza che natcasesort non fa differenza tra lettere maiuscole e minuscole. Queste funzioni non restituiscono nulla e hanno solo un parametro, l'array che si vuole ordinare.
Ecco un esempio:
Il risultato di sort sarà un array con gli elementi in questo ordine: “pippo1.php”, “pippo12.php” e “pippo2.php”; invece il risultato di natsort sarà questo: “pippo1.php”, “pippo2.php” e “pippo12.php”.
È possibile poi ordinare un array in base a una funzione definita dal programmatore. Per far ciò si può utilizzare la funzione usort che restituisce TRUE o FALSE in base al successo o meno dell'ordinamento e accetta due parametri. Il primo parametro è l'array da ordinare e il secondo è il nome della funzione definita dal programmatore.
La funzione definita dal programmatore deve accettare due parametri che saranno i due valori da confrontare e deve restituire un numero intero minore di zero se il primo parametro è minore del secondo, zero se i due parametri sono uguale e un numero intero maggiore di zero se il secondo parametro è maggiore del secondo.
Ecco un esempio che simula la funzione sort:
Altre due funzioni simili nel funzionamento a usort sono uasort che mantiene le chiavi e uksort che ordina in base alle chiavi e non ai valori.
La più basilare è sort che ci permette di ordinare un array dal valore più piccolo a quello più grande riassegnando le chiavi. Questa funzione restituisce TRUE o FALSE in base al successo o meno dell'ordinamento e accetta due parametri. Il primo parametro è l'array che vogliamo ordinare e il secondo, facoltativo, è il metodo di ordinamento che può avere tre valori: SORT_REGULAR per comparare gli elementi in modo normale, SORT_NUMERIC per compararli in modo numerico e SORT_STRING per compararli come stringhe.
Ecco un esempio:
<?php $arr = array('pippo','pluto','paperino'); sort($arr); ?>
Dopo l'utilizzo di questa funzione potrebbe essere necessario azzerare il contatore utilizzando la funzione reset.
Le seguenti funzioni si utilizzano alla stesso modo di sort ma servono per ordinare gli array in modo diverso:
- rsort ordina un array in ordine decrescente;
- asort ordina un array in ordine crescente ma mantiene le chiavi;
- arsort ordina un array in ordine decrescente ma mantiene le chiavi;
- ksort ordina un array in base alle chiavi e non ai valori;
- krsort ordina un array in base alle chiavi in ordine decrescente.
Per ordinare un array in modo naturale si possono usare le funzioni natsort e natcasesort. Entrambe ordinano in ordine crescente e mantengono le chiavi con l'unica differenza che natcasesort non fa differenza tra lettere maiuscole e minuscole. Queste funzioni non restituiscono nulla e hanno solo un parametro, l'array che si vuole ordinare.
Ecco un esempio:
<?php $arr = array('pippo12.php','pippo2.php','pippo1.php'); $arr2 = $arr; sort($arr); natsort($arr2); ?>
Il risultato di sort sarà un array con gli elementi in questo ordine: “pippo1.php”, “pippo12.php” e “pippo2.php”; invece il risultato di natsort sarà questo: “pippo1.php”, “pippo2.php” e “pippo12.php”.
È possibile poi ordinare un array in base a una funzione definita dal programmatore. Per far ciò si può utilizzare la funzione usort che restituisce TRUE o FALSE in base al successo o meno dell'ordinamento e accetta due parametri. Il primo parametro è l'array da ordinare e il secondo è il nome della funzione definita dal programmatore.
La funzione definita dal programmatore deve accettare due parametri che saranno i due valori da confrontare e deve restituire un numero intero minore di zero se il primo parametro è minore del secondo, zero se i due parametri sono uguale e un numero intero maggiore di zero se il secondo parametro è maggiore del secondo.
Ecco un esempio che simula la funzione sort:
<?php function sortAccordingMe($a,$b){ if($a==$b) return 0; else if($a<$b) return -1; else return 1; } $arr = array('pippo','pluto','paperino'); usort($arr,'sortAccordingMe'); ?>
Altre due funzioni simili nel funzionamento a usort sono uasort che mantiene le chiavi e uksort che ordina in base alle chiavi e non ai valori.
Questa guida è stata pubblicata su Ciarpame {.com}.
Guida scritta da Mattia il 16/10/2008.