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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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

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


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