Tra le operazioni che si possono effettuare con gli array, non può mancare la possibilità di ordinare gli elementi in un determinato ordine.
PHP mette a disposizione diverse funzioni native per ordinare in ordine crescente o decrescente gli elementi di un array, in ordine alfabetico se gli elementi sono stringhe, dal più piccolo al più grande o viceversa se gli elementi sono numeri.
Di seguito le funzioni più comunemente usate ed esempi di utilizzo di tali funzioni:
sort()
: consente l'ordinamento di array numerici in ordine crescente.rsort()
: consente l'ordinamento di array numerici in ordine decrescente.asort()
: consente l'ordinamento in ordine crescente di array associativi in base al valore degli elementi.arsort()
: consente l'ordinamento in ordine decrescente di array associativi in base al valore degli elementi.ksort()
: consente l'ordinamento in ordine crescente di array associativi in base alla chiave degli elementi.krsort()
: consente l'ordinamento in ordine decrescente di array associativi in base alla chiave degli elementi.La funzione sort()
viene utilizzata per ordinare gli elementi di un array numerico in ordine crescente:
<?php
$names = ["Mario", "Alberto", "Pippo", "Tizio", "Caio", "Sempronio"];
sort($names);
var_dump($names);
/* Output
array(6) {
[0]=>
string(7) "Alberto"
[1]=>
string(4) "Caio"
[2]=>
string(5) "Mario"
[3]=>
string(5) "Pippo"
[4]=>
string(9) "Sempronio"
[5]=>
string(5) "Tizio"
}
*/
La funzione rsort()
invece consente l'ordinamento degli elementi in ordine decrescente:
<?php
$numbers = [12, 50, 8, 43, 1, 14];
rsort($numbers);
var_dump($numbers);
/* Output
array(6) {
[0]=>
int(50)
[1]=>
int(43)
[2]=>
int(14)
[3]=>
int(12)
[4]=>
int(8)
[5]=>
int(1)
}
*/
Nota: le associazioni tra indici ed elementi vengono perse, a seguito dell'ordinamento tramite le funzioni sort()
e asort()
.
La funzione asort()
viene utilizzata per ordinare un array associativo in ordine crescente, in base al valore degli elementi:
<?php
$countries = [
"en" => "Inghilterra",
"de" => "Germania",
"es" => "Spagna",
"it" => "Italia",
"fr" => "Francia"
];
asort($countries);
var_dump($countries);
/* Output
array(5) {
["fr"]=>
string(7) "Francia"
["de"]=>
string(8) "Germania"
["en"]=>
string(11) "Inghilterra"
["it"]=>
string(6) "Italia"
["es"]=>
string(6) "Spagna"
}
*/
Al contrario la funzione arsort()
ordina gli elementi dell'array associativo in maniera decrescente, sempre in base al loro valore:
<?php
$colors = [
'red' => "rosso",
'green' => "verde",
'yellow' => "giallo",
'white' => "bianco",
'black' => "nero"
];
arsort($colors);
var_dump($colors);
/* Output
array(5) {
["green"]=>
string(5) "verde"
["red"]=>
string(5) "rosso"
["black"]=>
string(4) "nero"
["yellow"]=>
string(6) "giallo"
["white"]=>
string(6) "bianco"
}
*/
Concludiamo questa guida con le funzioni ksort()
e krsort()
, che consentono di ordinare rispettivamente in ordine crescente e decrescente gli elementi di un array associativo in base alla loro chiave:
<?php
$numbers = [
"10" => "dieci",
"40" => "quaranta",
"50" => "cinquanta",
"20" => "venti",
"30" => "trenta"
];
ksort($numbers); // Ordinamento crescente in base alle chiavi
var_dump($numbers);
krsort($numbers); // Ordinamento decrescente in base alle chiavi
var_dump($numbers);
/* Output
array(5) {
[10]=>
string(5) "dieci"
[20]=>
string(5) "venti"
[30]=>
string(6) "trenta"
[40]=>
string(8) "quaranta"
[50]=>
string(9) "cinquanta"
}
array(5) {
[50]=>
string(9) "cinquanta"
[40]=>
string(8) "quaranta"
[30]=>
string(6) "trenta"
[20]=>
string(5) "venti"
[10]=>
string(5) "dieci"
}
*/
Nota: in questo l'associazione tra indici ed elementi sono preservate, in quanto si tratta di array associativi.
Tra le funzioni per l'ordinamento di array, ne esiste una per l'ordinamento di array multidimensionali: array_multisort()
.
La funzione array_multisort()
consente di ordinare più array insieme o un array multidimensionale, rispetto a una o più delle sue dimensioni.
Vediamo prima un esempio di utilizzo nel caso dell'ordinamento di più array:
<?php
$ar1 = [10, 100, 100, 0];
$ar2 = [1, 3, 2, 4];
array_multisort($ar1, $ar2);
var_dump($ar1);
var_dump($ar2);
/* Output
array(4) {
[0]=>
int(0)
[1]=>
int(10)
[2]=>
int(100)
[3]=>
int(100)
}
array(4) {
[0]=>
int(4)
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
}
*/
Per una panoramica completa sulle funzioni PHP per l'ordinamento di array, consulta il seguente indirizzo https://www.php.net/manual/en/array.sorting.php.