Веб-мастерская Ларисы ВоронинойФункции сортировки массивов
WEB-мастерская Ларисы Ворониной logo

Функции сортировки массивов Май 25 2017

Довольно часто возникает необходимость отсортировать элементы массива по каким либо признакам.

В этой статье я расскажу о самых востребованных функциях сортировки массивов.

Функции sort и rsort.

Функция sort используется для сортировки элементов индексируемых массивов. Функция sort сортирует элементы массива по ключам.

Допустим, у нас в массиве имеются числа, расположенные в случайном порядке.

С помощью функции sort мы сортируем их по порядку.

<?php
$numbers = array (1,0,2,5,3,4,9,7,8,6);
sort($numbers);
echo '<pre>';
print_r($numbers);
echo '<pre>';
?>

В браузере мы увидим вот такой результат.

То же самое можно сделать и со строковыми значениями.

<?php
$users = array ('Маша', 'Катя','Вика');
sort($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>

В этом примере элементы сортируются по алфавиту.

Чтобы отсортировать элементы массива в обратном порядке используется функция rsort.

Функции ksort и krsort.

Функция ksort подобна функции sort, но обеспечивает сортировку ассоциативных массивов.

<?php
$users = array (
"c"=>"Маша",
"a"=>"Катя",
"b"=>"Вика"
);
ksort($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>

Результат в браузере будет такой.

Функция krsort, как вы уже догадались, сортирует элементы ассоциативного массива в обратном порядке.

Функция array-reverse.

Судя по названию, функции array-reverse возвращает функцию с её элементами в обратном порядке.

Иными словами функция array-reverse создаёт новый «перевёрнутый» массив.

<?php
$users = array (
"a"=>"Катя",
"b"=>"Вика",
"c"=>"Маша"
);
$reverse_users=array_reverse($users);
echo '<pre>';
print_r($reverse_users);
echo '<pre>';
?>

Функция shuffle.

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

<?php
$users = array (
"0"=>"Катя",
"1"=>"Вика",
"2"=>"Маша",
"3"=>"Вася",
"4"=>"Петя",
"5"=>"Паша"
);
shuffle($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>

Или

<?php
$users = array ("Маша","Катя","Вика","Вася","Петя");
shuffle($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>

Функции natsort и natcasesort.

Эти функции используются для натуральной сортировки.

Допустим, в массиве содержатся имена картинок, эти имена содержат буквы и цифры. Нам нужно отсортировать их по цифрам.

Если мы используем функцию natsort, то увидим следующую картину в браузере.

<?php
$images = array("U4.jpg","u2.jpg","u1.jpg","u3.jpg","u5.jpg");
natsort ($images);
echo '<pre>';
print_r($images);
echo '<pre>';
?>

Мы видим, что первый элемент не вписывается в общую картину. Всё потому, что имя файла написано с заглавной буквы U,в то время как названия остальных файлов написано с маленькой буквы u.

Функция natsort в этом случае не подходит, т.к. чувствительна к регистру символов.

Тут к нам на помощь приходит аналогичная функция natcasesort, которая игнорирует регистр.

<?php
$images = array("U4.jpg","u2.jpg","u1.jpg","u3.jpg","u5.jpg");
natcasesort ($images);
echo '<pre>';
print_r($images);
echo '<pre>';
?>