PHP kézikönyv
Előző |  | Következő

# usort

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

usort -- tömböt rendez elemértékei alapján egy felhasználó összehasonlító függvénnyel

## Leírás

void usort ( array array, string cmp_function )

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
`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, $val) = each ($a)) { echo "$key: $value\n"; }`

Ez a példa a következőt írja ki:

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

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

    b
    c
    d

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ő
uksort | Fel | Aspell függvények [ellenjavallt]