Loading:

Książka Zend Framework 3. Poradnik Programisty.

usort()

Sortuje tablicę według wartości korzystając ze zdefiniowanej przez użytkownika funkcji porównującej.

 

Funkcja ta posortuje tablicę według jej wartości korzystając z podanej przez użytkownika funkcji porównującej. Jeśli chcesz posortować tablicę według skomplikowanych kryteriów, to powinieneś użyć tej funkcji.

 

Funkcja porównująca musi zwracać liczbę całkowitą mniejszą, równą lub większą od zera jeśli pierwszy argument jest odpowiednio mniejszy, równy lub większy niż drugi.

 

 

Informacja: Jeśli wynikiem porównania dwóch elementów tablicy jest równość, ich kolejność w posortowanej tablicy pozostaje niezdefiniowana. Od PHP 4.0.6 funkcje zdefiniowane przez użytkownika mogły utrzymywać początkową kolejność tych elementów, lecz nowy algorytm sortowania wprowadzony w PHP 4.1.0 czyni to uniemożliwym i nie ma wydajnego sposobu na rozwiązanie tego problemu.

 

Informacja: Ta funkcja przypisuje nowe klucze dla elementów argumentu tablica . Wszystkie istniejące klucze zostaną usunięte.

 

Zwraca TRUE w przypadku powodzenia, FALSE w przypadku błędu.

 

Kompatybilność: PHP4, PHP5.



Napisz Artykuł

Listing

<?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");

foreach ($a as $key => $val) {
    echo "$key: $value\n";
}
?>

//Powyższy przykład wyświetli:

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

//#2 Przykład użycia usort() do sortowania wielowymiarowych tablic
<?php
function cmp($a, $b)
{
    return strcmp($a["owoc"], $b["owoc"]);
}

$owoce[0]["owoc"] = "cytryny";
$owoce[1]["owoc"] = "jabłka";
$owoce[2]["owoc"] = "winogrona";

usort($owoce, "cmp");

while (list($key, $value) = each($owoce)) {
    echo "\$owoce[$key]: " . $value["owoc"] . "\n";
}

//Sortując tablicę wielowymiarową, $a i $b zawierają referencję do pierwszego indeksu tablicy.

//Powyższy przykład wyświetli:

$owoce[0]: cytryny
$owoce[1]: jabłka
$owoce[2]: winogrona

//#3 Przykład użycia usort() używając funkcji składowej obiektu
<?php
class TestObj {
    var $name;

    function TestObj($name)
    {
        $this->name = $name;
    }

    /* Statyczna funkcja porównująca */
    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) {
    print $item->name . "\n";
}

//Powyższy przykład wyświetli:

b
c
d


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=3&t=206

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: divix
Ranga: Administrator serwisu Punktów: 37169
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors