52680.fb2 Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 23

Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 23

return ($a > $b) ? -1 : 1;

}

$a = array(4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");

uksort($a, "cmp");

while (list($key, $value) = each($a)) {

echo "$key: $valuen";

}

?>

Этот пример выведет:

20: twenty10: ten4: four3: three

Функция поддерживается PHP 3 =3.0.4, PHP 4, PHP 5

usort

Пользоваетльская сортировка значений массива.

Синтаксис:

bool usort(array arr, callback cmp_function)

Функция usort() сортирует массив arr без сохраненя индексных ассоциаций, используя для сравнения значений пользовательскую функцию, указанную в аргументе cmp_function. В эту функцию передаются два сравниваемых индекса элементов, а она должна вернуть положительное или отрицательное число или 0.

Эта функция как бы является "гибридом" функций uasort() и sort(). От sort() она отличается тем, что критерий сравнения обеспечивается пользовательской функцией. А от uasort() - тем, что она не сохраняет связей между ключами и значениями, а потому пригодна разве что для сортировки списков.

Пример использования функции usort():

<?php

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: $valuen";

}

?>

Пример одномерного массива:

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,$val)=each($a)) {

echo "$key: $valn";

}

При выполнении будет напечатано:

0: 61: 52: 33: 24: 1

Пример многомерного массива:

function cmp($a,$b) {

return strcmp($a["fruit"],$b["fruit"]);

};

$fruit[0]["fruit"]="lemons";

$fruit[1]["fruit"]="apples";