usort
(PHP 4, PHP 5)
usort — Zoradiť pole podľa hodnôt pomocou užívateľom definovanej porovnávacej funkcie
Popis
Táto funkcia zoradí pole podľa hodnôt pomocou užívateľskej porovnávacej funkcie. Ak sa pole, ktoré chcete zoradiť, má zoradiť podľa nejakého zložitého kritéria, mali by ste túto funkciu použiť.
Porovnávacia funkcia musí vrátiť integer menší ako, rovný alebo väčší ako nula, ak sa prvý argument považuje jednoznačne za menší ako, rovný alebo väčší ako druhý.
Note: Ak sa dva členy porovnávajú ako zhodné, ich poradie v zoradenom poli nie je definované. Až po PHP 4.0.6 by si užívateľom definované funkcie mali pre tieto prvky ponechať pôvodné poradie, ale s novým zoraďovacím algoritmom predstaveným v 4.1.0 tomu už tak nie je, pretože neexistuje, ako to urobiť efektívnym spôsobom.
Vracia TRUE pri úspechu alebe FALSE pri chybe.
Example#1 usort() príklad
<?php
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($key, $value) = each($a)) {
echo "$key: $value\n";
}
?>
Tento príklad by zobrazil:
0: 1 1: 2 2: 3 3: 5 4: 6
Note: Nepochybne v tomto triviálnom prípade by bola funkcia rsort() vhodnejšia.
Example#2 usort() príklad pomocou multi-dimenzionálneho poľa
<?php
function cmp($a, $b)
{
return strcmp($a["fruit"], $b["fruit"]);
}
$fruits[0]["fruit"] = "citrony";
$fruits[1]["fruit"] = "jablka";
$fruits[2]["fruit"] = "grepy";
usort($fruits, "cmp");
while (list($key, $value) = each($fruits)) {
echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
?>
Pri triedení multi-dimenzionálneho poľa, $a a $b obsahujú odkazy na prvý index poľa.
Tento príklad by zobrazil:
$fruits[0]: jablka $fruits[1]: grepy $fruits[2]: citrony
Example#3 usort() príklad pomocou funkcie člena objektu
<?php
class TestObj {
var $name;
function TestObj($name)
{
$this->name = $name;
}
/* Toto je staticky porovnavajucia funkcia: */
function cmp_obj($a, $b)
{
$al = strtolower($a->name);
$bl = strtolower($b->name);
if ($al == $bl) return 0;
return ($al > $bl) ? +1 : -1;
}
}
$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");
uasort($a, array ("TestObj", "cmp_obj"));
foreach ($a as $item) {
echo $item->name."\n";
}
?>
Tento príklad by zobrazil:
b c d
Tiež pozri uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort() a rsort().