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]