usort

usort -- Třídit pole podle hodnot pomocí uživatelsky definované porovnávací funkce

Popis

void usort ( array array, string cmp_function)

Tato funkce třídí pole podle hodnot pomocí uživatelsky definované porovnávací funkce . Pokud potřebujete třídit pole podle komplikovanějších kritérií , měli byste použít tuto funkci .

Porovnávací funkce musí vrace integer menší než 0 , 0 , a větší než 0 , pokud je první argument menší než , stejný , nebo větší než druhý argument . Pokud jsou dvě porovnávané hodnoty stejné , jejich pořadí v tříděném poli je nedefinováno .

Příklad 1 . Ukázka usort( )










Tato ukázka zobrazí :


























Poznámka : V tomto jednoduchém případě by pochopitelně bylo vhodnější použít rsort( ) .

Příklad 2 . Ukázka usort( ) s vícerozměrným polem

 
function

 
cmp

 
(

 
$a

 
,

 
$b

 
)

 
{

 
return

 
strcmp($a["fruit"],$b["fruit"])

 
;

 
}

 
$fruits[0]["fruit"

 
]

 
=

 
"lemons"

 
;

 
$fruits[1]["fruit"

 
]

 
=

 
"apples"

 
;

 
$fruits[2]["fruit"

 
]

 
=

 
"grapes"

 
;

 
usort($fruits

 
,

 
"cmp")

 
;

 
while

 
(list

 
($key

 
,

 
$value

 
)

 
=

 
each

 
($fruits)

 
)

 
{

 
echo

 
"\$fruits[$key]

 
:

 
"

 
.

 
$value["fruit"

 
]

 
.

 
"\n"

 
;

 
}





Při třídění vícerozměrného pole $a a $b obsahují reference na první index pole .

Tato ukázka zobrazí :






Varování

Použitá quicksort funkce v některých C knihovnách ( např . na systémech Solaris ) může způsobit zhroucení PHP , pokud porovnávací funkce nevrací konsistentní hodnoty .



Viz také : uasort( ) , uksort( ) , sort( ) , asort( ) , arsort( ) , ksort( ) , natsort( ) a rsort( ) .