В предыдущей главе мы узнали основы массивов PHP, т.е. что такое массивы, как их создавать, как просматривать их структуру, как получить доступ к их элементам и т. д. С массивами можно делать еще больше вещей, например, сортировать элементы в любом порядке.
В PHP есть ряд встроенных функций, разработанных специально для сортировки элементов массивов различными способами, например, в алфавитном, числовом, возрастающем или убывающем порядке. Здесь мы рассмотрим некоторые из этих функций, наиболее часто используемых для сортировки массивов.
sort()
иrsort()
— для сортировки индексированных массивов;asort()
иarsort()
— для сортировки ассоциативных массивов по значению;ksort()
иkrsort()
— для сортировки ассоциативных массивов по ключу.
Сортировка индексированных массивов по возрастанию
Функция sort()
используется для сортировки элементов индексированного массива в порядке возрастания (в алфавитном порядке для букв и в числовом для чисел).
<?php
// Определяем массив
$colors = array("Red", "Green", "Blue", "Yellow");
// Сортируем и печатаем массив
sort($colors);
print_r($colors);
// Выводит: Array ( [0] => Blue [1] => Green [2] => Red [3] => Yellow )
?>
Точно так же вы можете отсортировать числовые элементы массива в порядке возрастания.
<?php
// Определяем массив
$numbers = array(1, 2, 2.5, 4, 7, 10);
// Сортируем и печатаем массив
sort($numbers);
print_r($numbers);
// Выводит: Array ( [0] => 1 [1] => 2 [2] => 2.5 [3] => 4 [4] => 7 [5] => 10 )
?>
Сортировка индексированных массивов по убыванию
Функция rsort()
используется для сортировки элементов индексированного массива в порядке убывания (в алфавитном порядке для букв и в числовом для чисел).
<?php
// Определяем массив
$colors = array("Red", "Green", "Blue", "Yellow");
// Сортируем и печатаем массив
rsort($colors);
print_r($colors);
// Выводит: Array ( [0] => Yellow [1] => Red [2] => Green [3] => Blue )
?>
Аналогичным образом вы можете отсортировать числовые элементы массива в порядке убывания.
<?php
// Определяем массив
$numbers = array(1, 2, 2.5, 4, 7, 10);
// Сортируем и печатаем массив
rsort($numbers);
print_r($numbers);
// Выводит: Array ( [0] => 10 [1] => 7 [2] => 4 [3] => 2.5 [4] => 2 [5] => 1 )
?>
Сортировка ассоциативных массивов в возрастающем порядке по значению
Функция asort()
сортирует элементы ассоциативного массива в порядке возрастания в соответствии со значением. Она работает так же, как sort()
, но сохраняет связь между ключами и их значениями при сортировке.
<?php
// Определяем массив
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
// Сортируем по значению и печатаем массив
asort($age);
print_r($age);
// Выводит: Array ( [Harry] => 14 [Peter] => 20 [Clark] => 35 [John] => 45 )
?>
Сортировка ассоциативных массивов в порядке убывания по значению
Функция arsort()
сортирует элементы ассоциативного массива в порядке убывания по значению. Она работает так же, как rsort()
, но сохраняет связь между ключами и их значениями при сортировке.
<?php
// Определяем массив
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
// Сортируем по значению и печатаем массив
arsort($age);
print_r($age);
// Выводит: Array ( [John] => 45 [Clark] => 35 [Peter] => 20 [Harry] => 14 )
?>
Сортировка ассоциативных массивов в возрастающем порядке по ключу
Функция ksort()
сортирует элементы ассоциативного массива в порядке возрастания по их ключам. Она сохраняет связь между ключами и их значениями при сортировке, как и функция asort()
.
<?php
// Определяем массив
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
// Сортируем по ключу и печатаем массив
ksort($age);
print_r($age);
// Выводит: Array ( [Clark] => 35 [Harry] => 14 [John] => 45 [Peter] => 20 )
?>
Сортировка ассоциативных массивов в порядке убывания по ключу
Функция krsort()
сортирует элементы ассоциативного массива в порядке убывания их ключей. Она сохраняет связь между ключами и их значениями при сортировке, как и функция arsort()
.
<?php
// Определяем массив
$age = array("Peter"=>20, "Harry"=>14, "John"=>45, "Clark"=>35);
// Сортируем по ключу и печатаем массив
krsort($age);
print_r($age);
// Выводит: Array ( [Peter] => 20 [John] => 45 [Harry] => 14 [Clark] => 35 )
?>