Уроки PHP – как делать сортировку данных в массиве

В сегодняшнем уроке мы рассмотрим основные моменты, которые касаются сортировки данных массива в PHP. Вы узнаете наиболее важные встроенные в PHP функции, которые предназначены для сортировки массивов.

 

 

Введение в сортировку массивов в PHP

Довольно часто приходится сортировать данные в массивах. Возможно, вам нужно это делать в алфавитном или числовом порядке, в порядке возрастания или убывания. Для этого PHP предоставляет несколько полезных функций. В следующем разделе мы покажем вам, как использовать эти функции. Для начала возьмем небольшой массив в качестве примера:

<?php
$spisokTsvetov = array(
  "apple"  => "red",
  "grass"  => "green",
  "sky"    => "blue",
  "night"  => "black",
  "wall"   => "white"
);
?>

 

 

Теперь, если вы выведете массив, вы увидите элементы в том же порядке, в котором они были определены:

<?php
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

 

 

Результат будет следующим:

apple - red
grass - green
sky - blue
night - black
wall - white

 

 

Теперь перейдем к процессу сортировки этого массива.

 

 

Основные функции сортировки массива в PHP

Для сортировки массива в PHP вы можете использовать встроенные функции sort и rsort. Разница между ними заключается в том, что rsort сортирует массив в обратном порядке (по убыванию), а sort – в обычном порядке (по возрастанию).

Давайте посмотрим, как это работает. Отсортируем массив с помощью функции sort, прежде чем отобразить его содержимое. Код выглядит так:

<?php
sort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

 

 

Результат будет следующим:

0 - black
1 - blue
2 - green
3 - red
4 - white

 

 

Как вы могли заметить, эта функция назначает новые ключи для элементов в массиве. Функция сортировки sort удаляет все существующие ключи, которые вы могли назначить, вместо того, чтобы просто переупорядочивать ключи. Решение этой проблемы рассмотрим позже.

Если вам нужен обратный порядок, единственное, что вам нужно сделать, это использовать вместо этого функцию rsort, например, так:

<?php
rsort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

 

 

И результат будет следующий:

0 - white
1 - red
2 - green
3 - blue
4 - black

 

 

Теперь давайте узнаем, как решить проблему с потерей ключей, что важно, если вы используете ассоциативные массивы.

 

 

Сортировка ассоциативных массивов в PHP

Как мы видели ранее, функции sort и rsort не подойдут, если нам нужно сохранить ключи нашего массива. К счастью, в PHP есть встроенные функции и для этой проблемы. Функции называются asort и arsort. По примеру вышерассмотренных функций, asort сортирует по возрастанию, а arsort – по убыванию. Кроме этого, данные функции поддерживают сохранение ключей массива. Итак, давайте посмотрим, как эти функции справляются с сортировкой данных в массиве. Повторим наш тест с использованием новых функций:

<?php
asort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

 

 

Результат будет следующим:

night - black
sky - blue
grass - green
apple - red
wall - white

 

 

Теперь результат выглядит намного лучше. Чтобы получить сортировку в обратном порядке, просто используйте функцию arsort вместо asort.

Но что делать, если вы хотите отсортировать ассоциированные массивы на основе ключей? Нет проблем, давайте посмотрим как это сделать.

 

 

Как сортировать массив по ключу в PHP

Вы уже вероятно догадались, что в PHP есть функция сортировки ассоциативного массива по ключам. Этими функциями являются ksort и krsort. Как и прежде, krsort сортирует массив в обратном порядке. Использование такое же, как и раньше, поэтому код будет следующим:

<?php
ksort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

 

 

Результат будет следующим:

apple - red
grass - green
night - black
sky - blue
wall - white

 

 

Использовать функцию довольно krsort просто.

 

Помимо рассмотренных функций в PHP есть и другие, более сложные функции сортировки:

  • array_multisort – сортировка нескольких или многомерных массивов.
  • natcasesort – сортировка массива с использованием нечувствительного к регистру алгоритма «естественного порядка»
  • natsort – сортировка массива с использованием алгоритма «естественного порядка».
  • uasort – сортирует массив с помощью пользовательской функции сравнения и поддерживает связь с индексами.
  • uksort – сортирует массив по ключам, используя пользовательскую функцию сравнения
  • usort – сортирует массив по значениям, используя пользовательскую функцию сравнения

 

 

Бонусный навык: поиск в массиве с помощью PHP

Представьте себе, что у вас есть большой массив, который заполняется из файла или кода. И вы не знаете, существует ли данное значение в массиве или нет. И если оно существует, то было бы хорошо получить ключ этого элемента.

Массив рассмотрим тот же (что в самом начале статьи).

Теперь, если вы хотите узнать, существует ли значение blue, вы можете использовать встроенную в PHP функцию array_search(). Ниже пример ее использования:

<?php
echo 'Blue is ' . array_search("blue", $spisokTsvetov);
?>

 

В результате вы получите следующее значение:

Blue is sky

 

 

На сегодня все, спасибо, что читаете нас!

 

Recent Posts

Зачем выбирать образование за границей: преимущества для будущего вашего ребенка

Учеба за границей уже давно ассоциируется с качественным образованием, новыми возможностями и множеством перспектив. Но…

3 дня ago

Как выбрать мастера для перетяжки мебели?

Выбор мастера для ремонта и перетяжки мебели — задача, которая требует вдумчивого подхода. Ведь от…

4 дня ago

Что лучше выбрать для хостинга: сервер VPS Windows или VPS Linux?

Выбор идеального хостинга под свой сайт может быть довольно запутанным делом, особенно когда существует так…

2 недели ago

Лоуренс Питер

Чтобы избегать ошибок, нужно набираться опыта; чтобы набираться опыта, надо делать ошибки Лоуренс Питер  

2 недели ago

Что такое Черное СЕО (Black Hat SEO) — вся нужная информация

Краткое определение Черного SEO Черное СЕО (или Черная оптимизация) — это любая практика, целью которой…

2 недели ago

Права категории C: кому они нужны и как их получить?

Получение водительских прав категории C открывает двери к профессиональной деятельности, связанной с управлением грузовыми автомобилями.…

3 недели ago