usort

(PHP 3>= 3.0.3, PHP 4 >= 4.0.0)

usort --  Ordina un array mediante una funzione definita dall'utente

Descrizione

void usort (array array, string cmp_function)

Ordina i valori di un array mediante una funzione di comparazione definita dall'utente. Se si vuole ordinare un array con dei criteri non usuali, si deve usare questa funzione.

La funzione di comparazione deve restituire un intero minore, uguale o maggiore di zero a seconda che il primo argomento sia considerato rispettivamente minore, uguale o maggiore del secondo. Se due elementi risultano uguali, il loro ordine dnell'array ordinato è indefinito.

Esempio 1. esempio di usort()


function cmp ($a, $b) {   
    if ($a == $b) return 0;
    return ($a < $b) ? -1 : 1;
}

$a = array (3, 2, 5, 6, 1);

usort ($a, "cmp");

while (list ($chiave, $valore) = each ($a)) {
    echo "$chiave: $valore\n";
}
      

Questo esempio mostrerà:


0: 6
1: 5
2: 3
3: 2
4: 1
      

Nota: Ovviamente, in questo caso banale di ordinamento decrescente la funzione rsort() sarebbe stata più appropriata.

Esempio 2. esempio di usort() con un array multidimensionale


function cmp ($a, $b) {
    return strcmp($a["frutto"],$b["frutto"]);
} 

$frutti[0]["frutto"] = "limoni";
$frutti[1]["frutto"] = "arance";
$frutti[2]["frutto"] = "uva";

usort($frutti, "cmp"); 

while (list ($chiave, $valore) = each ($frutti)) {
    echo "\$frutti[$chiave]: " . $valore["frutto"] . "\n";
}
      

Quando si ordina un array multidimensionale, $a e $b contengono rierimenti al primo indice dell'array.

Questo esempio mostrerà:


$fruits[0]: arance
$fruits[1]: limoni
$fruits[2]: uva
      

Attenzione

La sottostante funzione di quicksort può causare, in alcune librerie C (per esempio, sui sistemi Solaris) un crash del PHP se la funzione di comparazione non restituisce valori coerenti.

Vedere anche: uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort(), e rsort().