PHP kézikönyv Előző Következő Ez a függvény a cmp_function paraméterben megadott nevű felhasználói függvénnyel rendezi az array tömb elemeit. Ha a rendezendő tömböt nem szokványos feltétel alapján akarjuk rendezni, akkor használjuk ezt a függvényt. Az összehasonlító függvénynek 0-nál kisebb vagy nagyobb ill. 0 értéket kell visszaadnia, ha az első elem kisebb vagy nagyobb a másodiknál, ill. ha egyenlők. Megjegyzés: Ha két elem egyenlő, sorrendjük a rendezett tömbben nem definiált. A 4.0.6-os verzióig a felhasználói függvény ezen elemek eredeti sorrendjét meg tudta őrizni. A PHP 4.1.0-ban bevezetett új rendezőalgoritmus erre már nem nyújt lehetőséget, mivel nincs rá hatékony módszer. Példa 1. usort() példa 1;} $a = array (3, 2, 5, 6, 1); usort ($a, "cmp"); while (list ($key, $val) = each ($a)) {echo "$key: $value\n";} Ez a példa a következőt írja ki: Megjegyzés: Ebben az egyszerű esetben nyilvánvalóan jobb választás az rsort() függvény használata. Példa 2. Az usort() használata több dimenziós tömbökön function cmp ($a, $b) {return strcmp($a["gyumolcs"], $b["gyumolcs"]);} $gyumolcsok[0]["gyumolcs"] = "citrom"; $gyumolcsok[1]["gyumolcs"] = "alma"; $gyumolcsok[2]["gyumolcs"] = "szőlő"; usort($gyumolcsok, "cmp"); while (list ($key, $val) = each ($gyumolcsok)) {echo "\$gyumolcsok[$key]: ". $value["gyumolcs"]. "\n";} Több dimenziós tömbökre alkalmazva $a és $b az első indexre mutató referenciákat fog tartalmazni. Ez a példa a következőt írja ki: $gyumolcsok[ 0]: alma $gyumolcsok[1]: citrom $gyumolcsok[2]: szőlő Megjegyzés: A függvény neve helyett egy tömböt is átadhatsz, ami egy objektum referenciát és egy metódus nevet kell tartalmazzon. Példa 3. Objektum tagfüggvényének (metódus) használata az usort() -tal class TestObj {var $nev; function TestObj($nev) {$this - nev = $nev;} / * ez statikus összehasonlító függvény: * / function cmp_obj($a, $b) {$al = strtolower($a - nev); $bl = strtolower($b - nev); 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 $elem) {print $elem - nev ."\n";} Ez a példa a következőt írja ki: Figyelem Néhány C könyvtárban (mint például a Solaris rendszerekben) a gyorsrendezés alapjául szolgáló függvény a PHP összeomlását okozhatja, ha az összehasonlító függvény nem következetes értéket ad vissza. Lásd még: uasort(), uksort(), sort(), asort(), arsort(), ksort(), natsort() és rsort()! Előző Tartalom Következő Fel Aspell függvények [ellenjavallt]