PHP и серверы

Сортировка по значению массив PHP

Сортировка по значению массив PHP 📅 ⏱ 21:17 ⏳ 1 мин 💬 0

Сортировка по значению массив php: простыми словами, по шагам и с примерами. Разбираем, как это работает на практике, типичные ошибки и лучшие решения. Раскрыва

Сортировка по значению массив PHP

Коротко: сортировка массива в PHP зависит от задачи: sort() и rsort() сортируют по значению с потерей ключей, asort() и arsort() сохраняют ключи, а usort() сортирует по своему правилу и работает с многомерными массивами.

Кому и зачемСортировка нужна постоянно: вывести товары по цене, участников по баллам, записи по дате. Важно выбрать функцию, которая не потеряет ключи, если они важны.

Функции сортировки

Функция Что сортирует
sort() по значению, ключи теряются
rsort() по значению в обратном порядке
asort() по значению, ключи сохраняются
ksort() по ключам
usort() по своему правилу

Простая сортировка

CODE
php
$nums = [3, 1, 2];
sort($nums);   // [1, 2, 3]

$prices = ['a' => 300, 'b' => 100];
asort($prices); // ['b' => 100, 'a' => 300]

asort() сохраняет привязку ключей — удобно, когда после сортировки нужно понять, к какому элементу относится значение.

Вкладки: свои правила



CODE
php
usort($arr, fn($a, $b) => $a <=> $b);
usort($arr, fn($a, $b) => $b - $a); // по убыванию

<=> возвращает -1, 0 или 1, что идеально подходит для сравнения. usort() даёт полный контроль над порядком.

CODE
php
$users = [
  ['name' => 'Аня', 'age' => 30],
  ['name' => 'Борис', 'age' => 25],
];
usort($users, fn($a, $b) => $a['age'] <=> $b['age']);

Многомерные массивы сортируют по нужному ключу через usort() — функция сравнивает поля элементов.

CODE
php
$names  = ['Борис', 'Аня', 'Вова'];
$ages   = [25, 30, 20];
array_multisort($ages, SORT_ASC, $names);

array_multisort() сортирует несколько массивов параллельно: вместе со значениями меняется порядок связанного массива.

ВниманиеФункции sort, rsort и usort меняют массив «на месте» и возвращают не результат, а признак успеха. Не присваивайте их результат массиву — присваивание затрёт данные.

Практика: отсортировать массив

  1. Определите, сортируете по значению или ключу.
  2. Ключи важны — asort/arsort.
  3. Ключи не важны — sort/rsort.
  4. Свой порядок — usort.
  5. Несколько связанных массивов — array_multisort.
  6. Проверьте результат через print_r.

Частые ошибки: причина → решение

Симптом Причина Решение
Пропали ключи использован sort asort
Массив обнулился присвоен результат sort не присваивать
Сортировка строк как чисел нет числового сравнения привести типы
Неверный порядок чисел строковое сравнение usort с <=>
Кириллица сортируется странно локаль/кодировка выровнять кодировку

Проверьте себя

Чек-лист




Какая функция сохраняет ключи?




Какая функция сортирует по своему правилу?




Вопросы и ответы

sort() заново нумерует элементы и удаляет исходные ключи. Если привязка ключей важна, используйте asort() или uasort().

Для простых массивов — rsort() или arsort(). В usort() поменяйте местами операнды или используйте $b <=> $a.

Функция сортирует массив непосредственно и возвращает лишь признак успеха. Поэтому результат не нужно присваивать — иначе массив превратится в true.

В usort() сравните сначала первый ключ, а при равенстве — второй. Так получают сортировку «сначала по цене, затем по названию».

Итоги

  • sort/rsort сортируют по значению без ключей.
  • asort/arsort сохраняют ключи.
  • usort задаёт своё правило и работает с многомерными массивами.
  • Результат этих функций не присваивают массиву.
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

Пока комментариев нет — будьте первым, кто поделится мнением.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получите консультацию нашего маркетолога

Изучит ваш проект, подберет подходящие услуги и тарифы

Получите бесплатный аудит

Наш специалист сделает базовый аудит вашего проекта и предложит персональные предложения.

Закажите услугу Каталог морепродуктов

Наш специалист свяжется с вами в ближайшее время и уточнит детали

Закажите адаптивный сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт лендинг

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт каталог

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите интернет-магазин

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите веб-приложение

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите тариф Аутсорс

Стоимость от 150 000 ₽

Закажите тариф Магазин

Стоимость 90 000 ₽

Закажите тариф Классический

Стоимость 60 000 ₽

Закажите тариф Эконом

Стоимость 40 000 ₽

Закажите SEO продвижение

Наш специалист свяжется с вами, проведет анализ, предложит стоимость