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:
<?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:


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 il 16/10/2008.

Le ultime guide della categoria PHP:

comments powered by Disqus