usort

(PHP 3>= 3.0.3, PHP 4 )

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()

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";
}
      

Tato ukßzka zobrazφ:

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

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φ:

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons
      

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().