Tra le costanti predefinite di PHP ci sono SORT_ASC e SORT_DESC usate con il metodo array_multisort() e utilizzate per ordinare un array rispettivamente in ordine crescente e decrescente in base a uno specifico valore.
Se per esempio abbiamo un array così composto:
Codice PHP
<?php
$array=
[
[
'userID'=>24,
'name'=>'Florence',
'distance'=>1.5
],
[
'userID'=>1,
'name'=>'Mike',
'distance'=>2
],
[
'userID'=>211,
'name'=>'John',
'distance'=>1
],
[
'userID'=>13,
'name'=>'Mark',
'distance'=>12.76
]
];
dove gli indici sono array aventi le stesse chiavi ma con valori differenti, e vogliamo ordinarlo in modo crescente per distanza ('distance') .
Usiamo il metodo array_column() per ottenere un array costituito da tutti i valori di una singola chiave:
Codice PHP
<?php
........ ........
$values=array_column($array,'distance');
var_dump($values);
/* Output
array(4)
{
[0]=> float(1.5)
[1]=> int(2)
[2]=> int(1)
[3]=> float(12.76)
}
*/
passiamo questo array così ottenuto al metodo array_multisort(), la costante SORT_ASC e l'array di esempio:
Codice PHP
<?php
........
........
$values=array_column($array,'distance');
$order=array_multisort($values,SORT_ASC,$array);
var_dump($order);
/* Output TRUE o FALSE */
la variabile $order restituirà un valore booleano TRUE se l'array di esempio è stato ordinato in ordine crescente per distanza ('distance')
Codice PHP
<?php
........
........
if($order)
{
var_dump($array);
/* Output
Array
(
[0] => Array
(
[userID] => 211
[name] => John
[distance] => 1
)
[1] => Array
(
[userID] => 24
[name] => Florence
[distance] => 1.5
)
[2] => Array
(
[userID] => 1
[name] => Mike
[distance] => 2
)
[3] => Array
(
[userID] => 13
[name] => Mark
[distance] => 12.76
)
)
*/
}
usiamo la costante SORT_DESC se invece vogliamo un ordinamento decrescente.