Часто при решении определенных задач требуется сделать сортировку данных, которые хранятся в массиве. Что такое сортировка массивов? Вот, например, играя в преферанс, люди раскладывают свои карты по значению и масти. Это дает возможность определить, каких еще карт им не хватает. А в словарях все упорядочивается по алфавиту. Примеров можно привести много. Сортировка – перегруппировка определенного множества объектов в каком-либо порядке по заданному признаку. Сортировка массивов требуется довольно часто. Для этого применяются разные методы. Чтобы понять их суть, достаточно рассмотреть подробно несколько способов.
Вам будет интересно:Регистрация dll для работы программы
На основе чего делают
Важно понимать, что массив состоит из многочисленных пар ключей и определенных значений. Сортировка массивов на языке Си делается при помощи десятков строк кода, а на языке PHP это достигается лишь одной несложной командой. Сортировка массивов возможна на основе ключей или значений. Еще можно распределять значения, оставив им существующие ключи или присвоив новые.
Главные различия функций
Сортировка массива PHP возможна при помощи разных функций. Давайте рассмотрим, чем они отличаются:
- Одни функции сортируют массивы по ключам их элементов, а другие - по значениям.
- Бывает разный порядок сортировки: убывающий, возрастающий, натуральный, числовой, алфавитный, определенный пользователями или случайный.
- Некоторые функции способны сохранять после сортировки связь, существующую между ключом и значением. Но есть функции, в которых ключи сбросятся в новые значения.
- Каждая функция осуществляет модификацию переданного массива. Отсортированную копию они не возвращают.
- Порядок сортировки считается неопределенным, когда функция определяет два элемента, как равные. Это нестабильная сортировка.
Некоторые функции сортировки массивов в PHP
Функции sort() и rsort(). Sort() упорядочивает в алфавитном порядке массив. Обратим внимание: данная функция чувствительна к регистру. Происходит сортировка по значениям без учета ключей. Rsort() сортирует в обратном порядке тоже по значениям и не учитывает ключи.
Asort() - это одна из функций, сохраняющая отношения ключей и значений. Ее полезно применять для ассоциативных массивов, когда это важно.
В примере ключами выбраны наименования фруктов, а значения – это цены. Сортировка происходит по возрастанию цены. Если необходима сортировка по названиям фруктов, то нужна функция ksort (), которая делает сортировку по ключам. Arsort () осуществляет сортировку одномерных массивов с индексами (описательными) по убыванию значений. Krsort () сортирует по убыванию ключей элементов.
Двумерный массив
Интересна сортировка двумерного массива. Это можно делать по-разному. В PHP есть возможность сравнивать два числа или две строки. Но в любом многомерном массиве каждый из элементов представляет собой массив. В PHP, чтобы сравнить несколько массивов, надо создать определенный метод. Рассмотрим двумерный массив, в котором хранится сокращенное название фруктов, полное название и цена. Элементы массива можно отсортировать в алфавитном порядке по сокращенным названиям.
В примере у нашей функции имя compare (сравнение). У нее 2 аргумента – x, y. Функция должна принять 2 значения, после чего определить порядок. Параметры x, y – 2 массива, которые находятся внутри y основного массива. Чтобы сравнивать description-элементы из массивов, что переданы в функцию, нужны переменные $x[1], $y[1]. В строке return1 происходит возвращение значения коду, который вызвал функцию. В основе сортировки нашего массива функция usort(). Сортировка идет по правилам, которые описывает функция compare().
Теперь сортировка массивов в PHP станет для вас понятной.