Сортировка элементов массива

Основными функциями сортировки элементов массива являются функции

bool sort(array array [, int sort_flags])

bool rsort(array array [, int sort_flags])

bool asort(array array [, int sort_flags])

bool arsort(array array [, int sort_flags])

bool ksort(array array [, int sort_flags])

bool krsort(array array [, int sort_flags])

Функция sort() сортирует массив array по возрастанию, а функция rsort() – по убыванию значений элементов. Параметр sort_flags может иметь одно из трех значений: SORT_REGULAR – нормальное сравнение значений, SORT_NUMERIC – числовое сравнение значений и SORT_STRING – сравнение значений, как строк.

Функции asort()и arsort() выполняют те же операции, но с сохранением соответствий ключей и значений. Функции ksort() и krsort() сортируют массив array по ключам в прямом и обратном порядке. Все функции возвращают значение true в случае успешного завершения сортировки и false – в противном случае.

Сортировка массива array по значениям, ключам и с сохранением соответствий ключей и значений при использовании заданной пользователем функции сравнения cmp_function выполняют функции

bool usort(array array, callback cmp_function)

bool uksort(array array, callback cmp_function)

bool uasort(array array, callback cmp_function)

Эти функции также возвращают значение true в случае успешного завершения сортировки и false – в противном случае.

Сортировка алфавитно-цифровых строк в соответствии с «естественным» порядком (по алфавиту) в массиве array с учетом или без учета регистра строк выполняется с помощью функций

void natsort(array array)

void natcasesort(array array)

Функция

array array_reverse(array array [, bool preserve_keys])

переставляет элементы массива array в обратном порядке с сохранением ключей, если параметр preserve_keys равен true, а функция

bool shuffle(array array)

перемешивает элементы массива случайным образом и возвращает значение true в случае успешного завершения или false – в противном случае.

Пример 4.6.110. Использование функций asort() и natsort():

Три массива $a, $b и $c с одинаковыми значениями элементов сортируются с использованием разных критериев:

// Массивы $a, $b и $c с одинаковыми значениями

$a = $b = $c = array('str8', 'str12', 'str10', 'str2');

// Сортировка элементов массива $a как чисел

asort($a, SORT_NUMERIC);

// Вывод нового массива

print '$a: '; print_r($a);

// Сортировка элементов массива $b как строк

asort($b, SORT_STRING);

// Вывод нового массива

print '$b: '; print_r($b);

// Сортировка элементов массива $c

// в "естественном" порядке

natsort($c);

// Вывод нового массива

print '$c: '; print_r($c);

После сортировки массивы $a, $b и $c будут иметь следующий вид:

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

Массив $a сортируется следующим образом: сначала идут элементы массива с нечетными значениями по возрастанию, затем элементы массива с четными значениями по убыванию:

// Сортировка 1 - сначала нечетные,

// потом четные числа

function oddEvenSort1($var1, $var2)

{

return $var1%2 == 0 && $var2%2!= 0;

}

// Сортировка 2 - четные числа по убыванию значений

function oddEvenSort2($var1, $var2)

{

return $var1%2 == 0 && $var2%2 == 0 && $var1 > $var2;

}

// Сортировка 3 - нечетные числа

// по возрастанию значений

function oddEvenSort3($var1, $var2)

{

return $var1%2!= 0 && $var2%2!= 0 && $var1 > $var2;

}

$a = array(8, 12, 5, 4, 7, 3, 9, 2); // Массив чисел

// Сортировка по трем критериям

usort($a, "oddEvenSort1");

usort($a, "oddEvenSort2");

usort($a, "oddEvenSort3");

// Вывод отсортированного массива

print '$a: '; print_r($a);

После сортировки массив $a будет иметь следующий вид:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: