В предыдущей главе мы узнали основы массивов 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 )
?>

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.