Untitled Document

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

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
[не рекомендуется применять]
Физика лабы
Элементарная математика Кратные интегралы Математический анализ Property information and attractions of Property Costa Brava Spain
Векторный анализ Аналитическая геометрия Пределы функции Изучение функции билеты в театр
Конспекты по математике Комплексные числа Дифференциальные уравнения новостройки в подмосковье
Определенные интегралы Лекции по высшей математике Исследование функций Недвижимость, обьявления
Вычисление объема с помощью интегралов Алгеброические структуры