Главная Свежие Последние Лучшие Контактная информация  
 
 


Функции » Массивы: usort
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, если функция сравнения не возвращает подходящие значения.

Добавить в закладки:

 

теги: usort
 

  Еще статьи
Математические: bcscale 72
include_once 89
if 170
foreach 354
Константы: Предопределённые константы zlib 176
 


  Категории
Начнем 13
Справочник языка 89
Возможности 12
Функции 142
Расширение PHP 4.0 0
FAQ 0
 

  Теги
 

  Лучшее на сайте
Безопасность: Скрытие PHP 472
Что такое PHP? 446
Безопасность: Данные, отправляемые пользователем 373
foreach 354
Файл конфигурации 333
Безопасность: Безопасность баз данных 333
Операции: Строковые операции 310
Безопасность: CGI-двоичный 305
Безопасность: Безопасность файловой системы 298
Безопасность: Обзор 291
 

  Друзья сайта
палатка kaiser
 

  Интересное
 

 
Использование материалов только при активной гиперссылке "http://iamcoder.net"
Copyright 2008 http://iamcoder.net Серия сайтов: "Стань умным!".