создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

usortПред.

След.

usort

(PHP 3 >= 3.0.3, PHP4, PHP 5)usort -- Отсортировать массив по значениям используя пользовательскую функцию для сравнения элементов

Описание

bool usort (array &array, callback cmp_function)

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

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

Замечание: Если два элемента исходного массива равны, их порядок в отсортированном массиве неопределён. До PHP4.0.6 пользовательские функции сохраняли для таких элеменов порядок в оригинальном массиве, но новый алгоритм сортировки, появившейся в версии 4.1.0 больше не использует это решение и не имеет другого эффективного.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример 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

";

}

?>

Результат выполнения данного примера:

0: 1

1: 2

2: 3

3: 5

4: 6

Замечание: Очевидно, что для этого тривиального случая более подходит функция sort().

Пример 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"] . "

";

}

?>

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

Результат выполнения данного примера:

$fruits[0]: apples

$fruits[1]: grapes

$fruits[2]: lemons

Пример 3. Пример использования usort() с методом класса

<?

class TestObj {

var $name;

function TestObj($name)

{

$this->name = $name;

}

/*This is the static comparing function:*/

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");

usort($a, array("TestObj", "cmp_obj"));

foreach ($a as $item){

echo $item->name . "

";

}

?>

Результат выполнения данного примера:

b

c

d

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

Пред.

Начало

След.

uksort

Уровень выше

Aspell functions [deprecated]

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting