П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



 
 
| Добавить в избранное | Сделать стартовой | Помощь





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

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
[не рекомендуется применять]


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: