Довольно часто возникает необходимость отсортировать элементы массива по каким либо признакам.
В этой статье я расскажу о самых востребованных функциях сортировки массивов.
Функции sort и rsort.
Функция sort используется для сортировки элементов индексируемых массивов. Функция sort сортирует элементы массива по ключам.
Допустим, у нас в массиве имеются числа, расположенные в случайном порядке.
С помощью функции sort мы сортируем их по порядку.
$numbers = array (1,0,2,5,3,4,9,7,8,6);
sort($numbers);
echo '<pre>';
print_r($numbers);
echo '<pre>';
?>
В браузере мы увидим вот такой результат.
То же самое можно сделать и со строковыми значениями.
$users = array ('Маша', 'Катя','Вика');
sort($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>
В этом примере элементы сортируются по алфавиту.
Чтобы отсортировать элементы массива в обратном порядке используется функция rsort.
Функции ksort и krsort.
Функция ksort подобна функции sort, но обеспечивает сортировку ассоциативных массивов.
$users = array (
"c"=>"Маша",
"a"=>"Катя",
"b"=>"Вика"
);
ksort($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>
Результат в браузере будет такой.
Функция krsort, как вы уже догадались, сортирует элементы ассоциативного массива в обратном порядке.
Функция array-reverse.
Судя по названию, функции array-reverse возвращает функцию с её элементами в обратном порядке.
Иными словами функция array-reverse создаёт новый «перевёрнутый» массив.
$users = array (
"a"=>"Катя",
"b"=>"Вика",
"c"=>"Маша"
);
$reverse_users=array_reverse($users);
echo '<pre>';
print_r($reverse_users);
echo '<pre>';
?>
Функция shuffle.
Функция shuffle позволяет перемешивать элементы массива в случайном порядке. Эта функция полностью меняет массив, поэтому использовать её нужно с осторожностью.
$users = array (
"0"=>"Катя",
"1"=>"Вика",
"2"=>"Маша",
"3"=>"Вася",
"4"=>"Петя",
"5"=>"Паша"
);
shuffle($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>
Или
$users = array ("Маша","Катя","Вика","Вася","Петя");
shuffle($users);
echo '<pre>';
print_r($users);
echo '<pre>';
?>
Функции natsort и natcasesort.
Эти функции используются для натуральной сортировки.
Допустим, в массиве содержатся имена картинок, эти имена содержат буквы и цифры. Нам нужно отсортировать их по цифрам.
Если мы используем функцию natsort, то увидим следующую картину в браузере.
$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, которая игнорирует регистр.
$images = array("U4.jpg","u2.jpg","u1.jpg","u3.jpg","u5.jpg");
natcasesort ($images);
echo '<pre>';
print_r($images);
echo '<pre>';
?>