П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое







Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 98146 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 29068 раз(а).

Учебник HTML.
Просмотров 56194 раз(а).

Руководство по PHP5.
Просмотров 25934 раз(а).

Хостинг через призму DNS.
Просмотров 30464 раз(а).

Подборка текстов стандартных документов.
Просмотров 28973 раз(а).

Учебник PHP - Самоучитель
Просмотров 33695 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 34979 раз(а).

Внешние атаки...
Просмотров 26948 раз(а).

Учебник PHP.
Просмотров 22780 раз(а).

SSI в примерах.
Просмотров 17853 раз(а).



 
 



Учебник РНР
НазадВперёд

usort

(PHP 3>= 3.0.3, PHP 4)

usort - сортирует массив по значениям, используя пользовательскую функцию сравнения.

Описание

void usort (array array, string cmp_function)

Эта функция отсортирует массив по значениям с помощью пользовательской функции сравнения. Если вам нужно нетривиально отсортировать массив, используйте её.

Функция обязана возвращать integer, меньше, равное или больше нуля, если первый аргумент рассматривается, соответственно, меньше, равным или больше секунды. Если два члена сравниваются как равные, их порядок в отсортированном массиве не определён.

Пример 1. 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";
}

Это пример выведет:

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

Примечание: очевидно, что в этом тривиальном случае больше подходит rsort().

Пример 2. Использование usort() с многомерным массивом
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";
}

При сортировке многомерного массива $a и $b содержат ссылки на первый индекс массива.

Этот пример выведет:

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

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Пример 3. usort()-пример использования функции - члена объекта
class TestObj {
    var $name;

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

    /* Это static-функция сравнения: */
    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";
}

Пример выведет:

b
c
d

Предупреждение!

Лежащая в основе функция быстрой сортировки в некоторых C-библиотеках (как в системах Solaris) может вызвать облом PHP, если функция сравнения не возвращает подходящие значения.

См. также uasort(), uksort(), sort(), asort(), arsort(), ksort(), natsort() и rsort().


Назад Оглавление Вперёд
uksort ВверхФункции Aspell
[не рекомендуется применять]


 







Copyright © 2005-2011 Project.Net.Ru