ksort — Отсортировать массив по ключам


Содержание

ksort

(PHP 4, PHP 5, PHP 7)

ksort — Сортирует массив по ключам

Описание

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

Список параметров

Вы можете изменить поведение сортировки, используя дополнительный параметр sort_flags , подробнее см. функцию sort() .

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования ksort()

ksort

ksort — Сортирует массив по ключам

Описание

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

Список параметров

Вы можете изменить поведение сортировки, используя дополнительный параметр sort_flags, подробнее смотри функцию sort() .

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования ksort()

Сортировать ассоциативный массив по ключу

Я знаю, что этот вопрос задавался ранее, но не в этом контексте (ООП):

Это indexAction возвращает пустой массив, и я не уверен, почему ..

Кто-нибудь может мне помочь с этим?

Спасибо и привет!

Решение

Здесь, внутри вашего usort Функция второго параметра состоит из двух значений первого ClassName а другой functionName так что ваш второй параметр выглядит как

Что в вашем случае это будет как

Другие решения

ksort — сортировка массива по ключу

Сортирует массив по ключу, сохраняя ключ к корреляции данных. Это полезно в основном для ассоциативных массивов.

Приведенный выше пример выведет:

а = оранжевый
б = банан
с = яблоко
д = лимон

PHP функции для сортировки массива

Когда нужно отсортировать массив по каким-либо критериям, то, скорее всего, в PHP есть функция, которая поможет в этом. Но функций для сортировки массивов, что это может немного запутать. Например, PHP sort и другие.

Я думаю, что команда PHP понимает это, так как на php.net есть удобная сводная таблица по этим функциям . В этой статье я хочу рассмотреть основные функции сортировки массивов.

Некоторые из этих функций имеют двойников, которые содержат букву в названиях. означает « реверс » и указывает на порядок сортировки. Порядок сортировки по умолчанию, который мы будем рассматривать — по возрастанию ( от меньшего к большему ), тогда как « реверсивные » функции сортируют в порядке убывания ( от большего к меньшему ).

Функции, которые применяются к неассоциативным массивам

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

  • PHP array sort : Сортировка массива « по умолчанию »;
  • rsort : Сортировка массива в обратном порядке.

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

До сортировки массив $text выглядит следующим образом:

array (size=5)
0 => string ‘Interdum congue nec’ (length=19)
1 => string ‘Duis et sollicitudin’ (length=20)
2 => string ‘Vestibulum sit amet’ (length=19)
3 => string ‘Duis luctus porttitor’ (length=21)
4 => string ‘Nunc massa lectus’ (length=17)

После сортировки с помощью функции sort PHP ( массив был переиндексирован ):

array (size=5)
0 => string ‘Duis et sollicitudin’ (length=20)
1 => string ‘Duis luctus porttitor’ (length=21)
2 => string ‘Interdum congue nec’ (length=19)
3 => string ‘Nunc massa lectus’ (length=17)
4 => string ‘Vestibulum sit amet’ (length=19

Если поддержание связи индекса-значения существенно, тогда можно использовать одну из функций для ассоциативных массивов ( смотрите ниже ).

Функции для применения к ассоциативным массивам

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

  • asort : Ассоциативная сортировка;
  • arsort : Ассоциативная сортировка в обратном порядке;
  • ksort : Работает таким же образом, как asort, но сортирует ключи массива;
  • krsort : Работает таким же образом, как arsort, но сортирует ключи массива в обратном порядке.

Следующие функции специализируются на « естественном порядке » ( что объясняет часть « nat » в имени функции ) сравнения строк. Вторая функция не чувствительна к регистру:

Если asort была применена к тому же массиву, который мы рассматривали выше:

Отсортированный массив будет выглядеть следующим образом:

array (size=5)
1 => string ‘Duis et sollicitudin’ (length=20)
3 => string ‘Duis luctus porttitor’ (length=21)
0 => string ‘Interdum congue nec’ (length=19)
4 => string ‘Nunc massa lectus’ (length=17)
2 => string ‘Vestibulum sit amet’ (length=19)

Функции сортировки массива по параметрам, определенным пользователем

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

usort : функция не поддерживает взаимосвязь между индексом и значением массива.
uasort : эта функция поддерживает взаимосвязь индекса-значения массива.
uksort : эта функция делает то же самое, но сортировка применяется к ключам массива.

Давайте предположим, что я провожу анализ текста, и хочу отсортировать фразы по длине:

Отсортированный массив $text будет выглядеть следующим образом:

array (size=5)
4 => string ‘Nunc massa lectus’ (length=17)
0 => string ‘Interdum congue nec’ (length=19)
2 => string ‘Vestibulum sit amet’ (length=19)
1 => string ‘Duis et sollicitudin’ (length=20)
3 => string ‘Duis luctus porttitor’ (length=21)

На этом мой обзор средств сортировки массива ( функции sort PHP и других ) закончен. Я не включил в него все функции, так как моя цель состояла в том, чтобы подчеркнуть разницу между функциями с аналогичными названиями. Еще одна важная функция сортировки — array_multisort . Она может быть использована для многомерных массивов, которые я не описал в данной статье.

Данная публикация представляет собой перевод статьи « PHP Array Sort Functions: An Overview » , подготовленной дружной командой проекта Интернет-технологии.ру

Сортировка ksort()

Задача — переназначить ключи в массиве и отсортировать массив по вновь назначенным ключам. Я новичок в php поэтому для переназначения выбрал, скорее всего, не очень хороший способ, но вопросы заключается не в этом, поэтому прошу не обращать внимания. Суть проблемы — после переназначения ключей, я сортирую с помощью ksort($array), но ключи, почему-то не сохраняют связи со значениями. Хотя на php.net написано

Сортирует массив по ключам, сохраняя отношения между ключами и значениями.

1 ответ 1

Так вы изменяете ключ, но он не сохраняется-жеж, вот вам наставление, а дальше если что докрутите сами:

PHP: Сортировка массивов. Сортировка массива по ключам

Сортировка является одной из наиболее важных процедур при работе с массивами. Чтобы осознать ее важность достаточно вспомнить о таких действиях, как, например, сортировка фильмов в алфавитном порядке или сортировка каких-либо цен по возрастанию или убыванию и т.д. Согласитесь, очень распространенные действия для различных приложений! Сегодня мы поговорим, как производить сортировку элементов массива по заданным условиям.

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

Задачи могут быть различными, но инструменты, которые мы при этом будем использовать останутся стандартными. Эти инструменты – специальные функции, которые и применяются для сортировки элементов массива.

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

Давайте на примерах разберем эти функции и посмотрим, как они работают.

Сортируем массивы-списки в алфавитном и обратном порядке

Для начала давайте познакомимся с достаточно простой и понятной функцией sort() .

Она позволит нам отсортировать элементы массива по возрастанию или, если эти элементы строковые – в алфавитном порядке.

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

$Mass = array(«Катя», «Аня», «Лена»,»Андрей»); sort($Mass); print_r($Mass); ?>

А результат будет следующим. Как Вы можете видеть на скриншоте справа, элементы отсортированы в алфавитном порядке. Если вместо строковых элементов у нас будут числа, то эта функция также отсортирует числа по возрастанию. Можете проверить это самостоятельно.

Также существует и функция, которая делает обратное действие, то есть сортирует элементы массива по убыванию или в порядке обратном алфавитному.

Эта функция называется rsort() . Работает она следующим образом:

$Mass = array(«Катя», «Аня», «Лена»,»Андрей»); rsort($Mass); print_r($Mass); ?>

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

Думаю, что с этими функциями все предельно ясно. Протестируйте их со своими массивами и у Вас не останется никаких вопросов.

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

Все замечательно, однако, с ассоциативными массивами мы уже не сможем применить данные функции, так как они разрывают связь значения с ключом массива. Поэтому нам нужно познакомиться еще с некоторыми функциями, которые позволят нам сортировать ассоциативные массивы.

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

Давайте начнем с сортировки по значениям.

Для того, чтобы отсортировать значения ассоциативного массива в алфавитном порядке, мы применим функцию asort() .

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

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; asort($Mass); print_r($Mass); ?>

Как Вы видите, значения ассоциативного массива отсортированы в алфавитном порядке, однако, их связь с ключами сохранена.

Таким же образом работает, и функция arsort() , за тем исключением, что она сортирует значения ассоциативного массива в обратном порядке.

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; arsort($Mass); print_r($Mass); ?>

Здесь опять же мы можем видеть, что значения элементов массива сохраняют свою связь с ключами, но отсортированы в обратном порядке.

Тот же самый ассоциативный массив мы можем отсортировать и по ключам.

Как Вы, наверное, уже догадались это можно сделать в алфавитном или обратном порядке.

Для того, чтобы сортировать массив по ключам в алфавитном порядке, нам понадобится функция ksort() .

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; ksort($Mass); print_r($Mass); ?>

Массив отсортирован по ключам в алфавитном порядке.

Для того, чтобы отсортировать массив по его ключам в обратном порядке, применяется функция krsort() .

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; krsort($Mass); print_r($Mass); ?>

Думаю, что из скриншота все понятно.

Пользовательская сортировка

Также мы можем задать и свои порядок сортировки, то есть создать пользовательскую сортировку.

Для этого также в php предусмотрены специальные функции.

Для пользовательской сортировки списков предусмотрена функция usort() .

Она будет принимать два аргумента. Первый аргумент – это наш массив; второй аргумент – будет содержать имя функции, сравнивающей два элемента.

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

1 – если первый элемент сравнения больше второго;

-1 – если второй больше первого;

0 – если элементы равны.

Таким образом мы, например, можем отсортировать элементы массива по возрастанию их длины.

Для этого сначала объявим сам массив, который будет содержать строковые элементы различной длины.

После этого воспользуемся функцией для пользовательской сортировки usort() . Ей передадим в качестве аргументов: имя нашего массива и имя функции, которую мы создали для сравнения элементов.

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

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

Также мы можем сделать пользовательскую сортировку ассоциативного массива по его ключам. Для этого нам понадобится функция uksort() и сам ассоциативный массив.

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

Ключи элементов массива отсортированы по возрастанию их длины.

И также мы можем создать пользовательскую сортировку ассоциативного массива по значениям его элементов. В этом нам поможет функция uasort() .

Принцип все тот же.

Теперь массив отсортирован по увеличению длин его значений.

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

Чтобы хорошенько понять, как работает пользовательская сортировка, нужно попрактиковаться и попробовать написать какую-то свою функцию сравнения.

Однако, теперь, я думаю, у Вас есть полное представление о том, как можно сортировать элементы массива и каким образом эти отсортированные элементы использовать.

Практикуйтесь, пишите Ваши комментарии и делитесь статьей с друзьями при помощи кнопок социальных сетей.

Если Вы еще не подписаны на обновления блога, то подписывайтесь. Форма подписки находится ниже.

С Вами была Анна Котельникова. До встречи в следующих статьях.

Расстановка элементов массива в обратном порядке.
Синтаксис:

Array array_reverse(array arr [, bool preserve_keys])

Функция array_reverse() возвращает массив, элементы которого следуют в обратном порядке относительно массива, переданного в параметре. При этом связи между ключами и значениями не теряются, если дополнительный параметр preserve_keys = TRUE.

Пример использования функции array_reverse():

Этот пример сделает оба массива $result и $result_keyed с одинаковыми значениями, но различными ключами. Распечатка массивов $result и $result_keyed будет следующей:

Примечание: Второй параметр preserve_keys был добавлен в PHP 4.0.3.

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

Void natcasesort(array arr)

Функция natcasesort() сортирует массив arr в естественном для человека порядке с сохранением индексных ассициаций.
Эта функция схожа с natsort(), только не учитывает регистр символов.
Пример использования функции natcasesort():

Приведенный пример выведет следующее:

Стандартная сортировкаArray(
=> IMG0.png
=> IMG3.png
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Естественная сортировка (без учета регистра)
Array(
=> IMG0.png
=> img1.png
=> img2.png
=> IMG3.png
=> img10.png
=> img12.png
)

Функция поддерживается PHP 4, PHP 5

Пользовательская сортировка ассоциативного массива с сохранением индексных ассоциаций.
Синтаксис:

Bool uasort(array arr, function cmp_function)

Функция uasort() сортирует массив arr с сохранением индексных ассоциаций, используя для сравнения индексов элементов пользовательскую функцию, указанную аргументом cmp_function.
Эта функция используется главным образом когда соответствие индексов и значений массива существенно.
Функция uasort() возвращает true в случае успешного завершения сортировки, и false в противном случае.
Замечание: Смотрите функции usort() и uksort() для написания пользовательской функции.
Функция поддерживается PHP 3 >=3.0.4, PHP 4, PHP 5

Пользовательская сортировка массива по ключам.
Синтаксис:

Bool uksort(array arr, function cmp_function)

Функция uksort() сортирует массив arr по индексам с сохранением индексных ассоциаций, используя для сравнения индексов элементов пользовательскую функцию, указанную в аргументе cmp_function. В эту функцию передаются два сравниваемых индекса элементов, а она должна вернуть положительное или отрицательное число или 0.

Функция uksort() возвращает true в случае успешного завершения сортировки, и FALSE в противном случае.
Довольно часто нам приходится сортировать что-то по более сложному критерию, чем просто по алфавиту. Например, пусть в $Files храниться список имен файлов и подкаталогов в текущем каталоге. Возможно, мы захотим вывести этот список не только в лексографическом порядке, но также чтобы все каталоги предшествовали файлам. В этом случае нам стоит воспользоваться функцией uksort(), написав предварительно функцию сравнения с двумя параметрами, как того требует uksort().

1 пример использования функции uksort():

// Эта функция должна сравнивать значения $f1 и $f2 и возвращать:
// -1, если $f1 $f2
// Под понимаем следование этих имен в выводимом спискеfunction FCmp($f1,$f2)
< // Каталог всегда предшествует файлу
if(is_dir($f1) && !is_dir($f2)) return -1;
// Файл всегда идет после каталога
if(!is_dir($f1) && is_dir($f2)) return 1;
// Иначе сравниваем лексиграфически
if($f1 $f2) return 1; else return 0;
>
// Пусть $Files содержит массив с ключами — именами файлов
// в текущем каталоге. Отсортируем его.uksort($Files,»FCmp»); //передаем функцию сортировки «

Сортировать несколько массивов или многомерные массивы (PHP 4, PHP 5)

Bool array_multisort (array ar1 [, mixed arg [, mixed . [, array . ]]])

Функция array_multisort() может быть использована для сортировки сразу нескольких массивов или одного многомерного массива в соответствии с одной или несколькими размерностями. Эта функция сохраняет соответствие между ключами и соответствующими им значениями.

Входные массивы рассматриваются как столбцы таблицы, которую нужно отсортировать по строкам — такой подход напоминает поведение выражения SQL ORDER BY. Первый массив имеет проиоритет в процессе сортировки.

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

Значения, определяющие порядок сортировки:

SORT_ASC — сортировать в возрастающем порядке
SORT_DESC — сортировать в убывающем порядке

Флаги типа сортировки:

SORT_REGULAR — сравнивать элементы обычным образом
SORT_NUMERIC — сравнивать элементы, как если бы они были числами
SORT_STRING — сравнивать элементы, как если бы они были строками

Недопустимым является указание двух флагов сортировки одинакового типа после каждого массива. Флаги сортировки, переданные после аргумента ar1, применяются только к этому аргументу — перед тем, как функция начнет обрабатывать следующий массив, эти флаги снова принимают значения по умолчаниюt SORT_ASC и SORT_REGULAR.

Сортировка нескольких массивов

$ar1 = array («10», 100, 100, «a»);
$ar2 = array (1, 3, «2», 1);
array_multisort ($ar1, $ar2);

В вышеприведенном примере, после того, как будет осуществлена сортировка, первый массив будет содержать 10, «a», 100, 100. Второй — 1, 1, «2», 3. Элементы второго массива, соответствующие идентичным элементам первого (100 и 100), также будут отсортированы.

Сортировка многомерного массива

$ar = array (array («10», 100, 100, «a»), array (1, 3, «2», 1));
array_multisort ($ar, SORT_ASC, SORT_STRING,
$ar, SORT_NUMERIC, SORT_DESC);

В вышеприведенном примере, после сортировки, первый массив будет содержать 10, 100, 100, «a» (его элементы были отсортированы в возрастающем порядке так, как если бы они были строками), а второй массив будет содержать 1, 3, «2», 1 (элементы отсортированы как числа, в порядке убывания).

Отсортировать массив по значениям используя пользовательскую функцию для сравнения элементов (PHP 3 >= 3.0.3, PHP 4, PHP 5)

Bool usort (array &array, callback cmp_function)

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

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

Замечание: Если два элемента исходного массива равны, их порядок в отсортированном массиве неопределён. До PHP 4.0.6 пользовательские функции сохраняли для таких элеменов порядок в оригинальном массиве, но новый алгоритм сортировки, появившейся в версии 4.1.0 больше не использует это решение и не имеет другого эффективного.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример использования usort()

Замечание : Очевидно, что для этого тривиального случая более подходит функция sort().

Пример использования функцией usort() многомерных массивов

При сортировке многомерного массива переменные $a и $b содержат ссылки на первые два индекса массива.

Результат выполнения данного примера:

$fruits: apples
$fruits: grapes
$fruits: lemons

Пример использования usort() с методом класса

/* This is the static comparing function: */
function cmp_obj($a, $b)
<
$al = strtolower($a->name);
$bl = strtolower($b->name);
if ($al == $bl) <
return 0;
>
return ($al > $bl) ? +1: -1;
>
>

$a = new TestObj(«c»);
$a = new TestObj(«b»);
$a = new TestObj(«d»);

usort($a, array(«TestObj», «cmp_obj»));

Результат выполнения данного примера:

Перемешивание элементов массива.
Синтаксис:

Void shuffle(array arr)

Функция shuffle() «перемешивает» список, переданный ей первым параметром arr, так, чтобы его значения распределялись случайным образом. При этом измениться сам массив и ассоциативные массивы воспринимаются как списки.
Пример использования функции shuffle():

= 3.0.8, PHP 4, PHP 5

Сортировка массива по возрастанию.
Синтаксис:

Bool sort(array arr [, int sort_flags])

Функция sort() предназначена для сортировки массивов в порядке возрастания.
Замечание: Эта функция изменяет ключи у отсортированных значений. Т.е. любой ассоциативный массив воспринимается этой функцией как список. После упорядочивания последовательность ключей превращается в 0,1,2. а значения нужным образом перераспределяются. Как видим, связи между параметрами ключ=>значение не сохраняются, более того — ключи просто пропадают, поэтому сортировать что-либо, отличное от списка, вряд ли целесообразно.
Пример использования функции sort():

Этот пример выведет:

Fruits = applefruits = bananafruits = lemonfruits = orange

;
SORT_NUMERIC — сравнивает элементы как числа;
SORT_STRING — сравнивает элементы как строки.

Сортировка массива по убыванию.
Синтаксис:

Bool rsort (array array [, int sort_flags])

Функция rsort() сортирует массив array в порядке убывания (от высших значений к низшим).

Функция возвращает TRUE в случае успешного завершения, и FALSE в противном случае.
Пример использования функции rsort():

Этот пример выведет:

0 = orange
1 = lemon
2 = banana
3 = apple

Аргумент sort_flags задает следующие флаги сортировки:
SORT_REGULAR — сравнивает элементы «как есть»
Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка ассоциативного массива по возрастанию.
Синтаксис:

Bool asort(array arr [, int sort_flags])

Функция asort() сортирует массив, указанный в ее параметре, так, чтобы его значения шли в алфавитном (если это строки) или возрастающем (для чисел) порядке. При этом сохраняются связи между ключами и соответствующими им значениями, т.е. некоторые пары ключ=>значение просто «всплывают» наверх, а некоторые — наоборот, «опускаются».

Функция возвращает true в случае успешного завершения, и false в случае возникновения ошибки.
Пример использования функции asort():

«lemon», «a» => «orange», «b» => «banana», «c» => «apple»);
asort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) <
echo «$key = $valn»;
>
?>

Пример выведет следующее:

C = appleb = bananad = lemona = orange

Массив $fruits был отсортирован в возрастающем символьном порядке, при этом индексы массива были сохранены.

Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка ассоциативного массива по убыванию.
Синтаксис:

Bool arsort(array arr [, int sort_flags])

Функция arsort() сортирует массив arr по убыванию с сохранением индексных ассоциаций.
Эта функция используется главным образом там, где существенен порядок элемента в массиве.
Функция возвращает true в случае успешной сортировки, и false в случае возникновения ошибки.
Пример использования функции arsort():

«lemon», «a»=>»orange», «b»=>»banana», «c»=>»apple»);
arsort($arr);
reset($arr);
while(list ($key, $val) = each ($arr)) <
echo «$key = $vall»;
>

A = oranged = lemonb = bananac = apple

Массив $arr был отсортирован в убывающем символьном порядке, при этом индексы массива были сохранены.
Метод сортировки может быть изменен при помощи необязательного параметра sort_flags.
Этот параметр может указать, как сравнивать значения (как строки или как числа). Он может принимать следующие предопределенные значения:
SORT_REGULAR — нормальное сравение значений;
SORT_NUMERIC — сравнивать как числа;
SORT_STRING — сравнивать как строки.
Этот параметр был введен в PHP начиная с 4 версии.
Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка массива по возрастанию ключей.
Синтаксис:

Bool ksort(array arr [, int sort_flags])

Функция ksort() сортирует массив в порядке возрастания ключей с сохранением взаимосвязей ключей и значений. Эта функция особенно полезна при сортировке ассоциативных массивов.
Функция возвратит true, если все прошло успешно, и false в противном случае.
Пример использования функции ksort():

«lemon», «a»=>»orange», «b»=>»banana», «c»=>»apple»);
ksort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) <
echo «$key = $valn»;
>
?>

Данный пример выведет:

A = orangeb = bananac = appled = lemon

Аргумент sort_flags задает следующие флаги сортировки:
SORT_REGULAR — сравнивает элементы «как есть»
SORT_NUMERIC — сравнивает элементы как числа SORT_STRING — сравнивает элементы как строки
Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка массива по убыванию индексов.
Синтаксис:

Bool krsort(array arr [, int sort_flags])

Функция krsort() сортирует ключи в массиве arr в обратном порядке. При этом связка ключей и значений сохраняется. Эта функци полезна при сортировке ассоциативных массивов.
Функция возвращает true в случае успешного завершения, и false в противном случае.
Пример использования функции krsort():

«lemon», «a»=>»orange», «b»=>»banana», «c»=>»apple»);
krsort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) <
echo «$key = $valn»;
>
?>

Данный пример выведет:

D = lemonc = appleb = bananaa = orange

Аргумент sort_flags задает следующие флаги сортировки:
SORT_REGULAR — сравнивает элементы «как есть»
SORT_NUMERIC — сравнивает элементы как числа SORT_STRING — сравнивает элементы как строки
Функция поддерживается PHP 3 >= 3.0.13, PHP 4, PHP 5

Выполняет «естественную» сортировку массива.
Синтаксис:

Void natsort(array arr)

Функция natsort() сортирует массив arr в естественном для человека порядке с сохранением индексных ассициаций.
Пример использования функции natsort():

Этот пример выведет следующее:

Стандартная сортировкаArray(
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Естественная сортировкаArray(
=> img1.png
=> img2.png
=> img10.png
=> img12.png
)

Функция поддерживается PHP 4, PHP 5

Благодаря своей мощности и гибкости в работе массивы стали непременным атрибутом PHP . Причем, в ряде сложных ситуаций можно задействовать и двумерные массивы PHP . Данная статья посвящена сортировке многомерных массивов в PHP .

  • Многомерный массив;
  • Встроенные функции PHP usort () , uasort () или uksort () ;
  • Встроенные функции PHP strcasecmp() или strcmp() .

Реализация :
Допустим что, у нас есть массив:

$students = array (1 => array («name» => «Jack», «grade» => 98.5), 2 => array («name» => «Bill», «grade» => 90.1), 3 => array («name» => «Chloe», «grade» => 94.0), 4 => array («name» => «Taylor», «grade» => 95.1), 5 => array («name» => «Larry», «grade» => 94.6));

Здесь можно осуществить сортировку двумерного массива PHP по параметру grade ( оценка ) ( числовая сортировка ) или name ( имя ) ( сортировка в алфавитном порядке ).

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

Для сортировки многомерного массива мы задаем собственную функцию. Говорим PHP , что именно ее нужно использовать для вызова встроенных функций usort () , uasort () или uksort () .

Определяемая функция должна принимать два параметра и возвращать значение, указывающее, какой именно параметр идет первым по списку. Отрицательное или false значение говорит о том, что первый параметр указывается до второго. Положительное или true — что вначале идет второй параметр. Нулевое значение (0 ) указывает, что оба параметра равнозначны.

A – Сортировка по оценке (параметр grade) (числовая сортировка)

Определим функцию для сортировки массива по оценке (параметр grade ):

// Функция сортировки по оценке: сортировка по УБЫВАНИЮ. function grade_sort($x, $y) < if ($x[" оценка "] $y["оценка"]) < return false; >else < return 0; >>

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

// $students – наш многомерный массив, а grade_sort – созданная функция usort ($students, » grade_sort «);

// Вызвать на печать массив в виде (начальный массив): echo «

Массив в виде

Массив отсортирован по оценке

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

Выводя на экран значения $x[‘оценка’] и $y [‘оценка’] , можно увидеть, как вызывается функция сортировки, определенная пользователем.

Можно сократить функцию grade_sort следующим образом:

Примечание : Функция usort () сортирует по значениям, но не сохраняет ключи ( для внешнего массива ). Если ключи нужны, то лучше использовать функцию uasort () .

Илон Маск рекомендует:  Что такое код asp serverconfigsslallowencrypt

B – Сортировка по имени (в алфавитном порядке)

Чтобы отсортировать массив $students по первому ключу, необходимо сравнить две строки. Поэтому в примере с сортировкой в алфавитном порядке воспользуемся функция strcasecmp() ( не чувствительна к регистру ) и strcmp() ( чувствительна к регистру ). Получившийся двумерный массив PHP будет иметь следующий вид:

// Функция сортировки по имени: function name_sort($x, $y)

// Вывести на печать массив в виде (начальный массив): echo «

Массив в виде

Массив отсортирован по имени

На скриншоте, приведенном ниже, показан результат сортировки по имени:

Перевод статьи « Sorting multi-dimensional array in PHP » был подготовлен дружной командой проекта .

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

И одна из них, с которой лично мне приходится достаточно часто встречаться на работе, – это сортировка массива php .

Такие частые встречи были обусловлены тем, что, как показывает практика, люди любят время от времени, для разнообразия, менять последовательность вывода объектов на своём сайте – будь то товары в Интернет-магазине, сообщения пользователей на форуме или блоки информации на сайтах-визитках.

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

Немного теории о массивах php

PHP – это серверный язык программирования. Серверный, потому что скрипты, которые запускаются пользователями через веб-интерфейс (Интернет-браузер), хранятся и выполняются на сервере.

PHP-скрипты скрыты от взора обычного пользователя. В окне ваших браузеров вы видите только результаты их выполнения.

Массив в программировании – это совокупность каких-то данных. Состоят они из элементов массива, которые представляют собой пары [индекс] => [значение].

Массивы бывают статические, динамические, гетерогенные и т.д. (целая наука) �� Нам же для работы с ними вполне хватит классификации на одномерные и многомерные.

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

Одномерый массив php:

Array ( => 1 => 2 => 3)

Многомерный массив php:

Array ( => Array ( => 1) => Array ( => 2) => Array ( => 3))

Заметили? Если нет – обратите внимание на элементы многомерного массива php. Они сами являются массивами. Т.е. многомерный массив – это совокупность массивов. Уровень их вложенности может быть сколько угодно большим.

Теперь, думаю, точно понятно ��

Также ещё хотелось бы отдельно выделить понятие ассоциативного массива php. В реальной жизни они не так распространены, как обычные, но всё же имеют место быть.

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

Примером ассоциативного массива может служить следующая конструкция:

Array ( => 12 [фио] => Иванов Иван Иванович [средний_балл] => 3)

Как видите, здесь значения ключей и значений элементов массива тесно связаны и ни в коем случае нельзя разрывать эту связь. Благодаря этому ассоциативные массивы очень часто называют «словарями» или «справочниками».

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

В самом php массивы создаются двумя способами:

  1. $books = array(‘Азбука’, ‘Букварь’, ‘Словарь); или $books = array(‘azb’ => ‘Азбука’, ‘buk’ => ‘Букварь’, ‘slov’ => ‘Словарь’); Второй вариант используется, когда элементу нужно явно указать ключевое поле (актуально для ассоциативных массивов). Если его не указать, по умолчанию ключи элементов массива будут числами. Начиная с 0 (нуля).
  2. $books = ‘Азбука’; $books = ‘Букварь’; $books = ‘Букварь’;

В обоих случаях $books будет являться массивом. Так что, если вы встретите в коде своего сайта такие конструкции, это уже не будет для вас чем-то непонятным ��

Если вы хотите узнать о массивах php более подробно, то рекомендую вашему вниманию следующее видео:

Напомню, что для того, чтобы увидеть структуру массива у себя на экране, после объявления массива в коде сайта необходимо прописать следующую конструкцию:

Если распечатываемая вами переменная будет являться массивом, то текст будет начинаться со следующей строки:

И ещё несколько слов о теме нашей статьи – сортировке массивов php .

Как вы могли понять, данные в массивах структурированы и элементы расположены в определённой последовательности. Для того, чтобы изменить её, нам как раз и понадобится сортировка массива php, которая реализована готовыми функциями языка.

Поэтому всё, что нам нужно сделать – это вызвать требуемую функцию после объявления массива, указав его в качестве параметра.

Переходим к обзору самих функций.

Функции сортировки массива php

Их полный перечень представлен в официальной документации языка php:

Для того, чтобы произвести сортировку массива php с помощью какой-то конкретной функции, нужно будет вызвать её после объявления массива и заполнения его значениями, указав ей в качестве параметров наш массив. Например:

$cars = array(«Toyota», «Mazda», «Mitsubishi»); sort($cars);

Рассмотрим вкратце функционал каждой из них. Функции будут указаны в том формате, в котором их нужно будет вызывать в коде, т.е. «название(параметр1, параметр2, …);».

Не забудьте после вызова функции поставить «;», т.к. без неё на экране появится красивое сообщение об ошибке ��

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

Array ( => 11 => 18 => 9)

Итак, как же можно произвести сортировку массива в нужном порядке на php?

Функции простой сортировка массива php по значению

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

Если после него у вас остались вопросы, то более подробную информацию по каждой функции вы можете найти ниже.

sort($array, $flag); — одна из самых простых и востребованных функций. Позволяет отсортировать массив по возрастанию на php с учетом значений элементов, т.е. они будут расположены от меньшего значения к большему. В качестве параметров принимает переменную массива и один из флагов сортировки, который позволяет изменить поведение сортировки.

  • SORT_REGULAR – элементы сравниваются без изменения типов
  • SORT_NUMERIC – элементы сравниваются как числа
  • SORT_STRING – элементы сравниваются как строки
  • SORT_LOCALE_STRING – строковое сравнение, но с учетом текущей локали.
  • SORT_NATURAL – строковое сравнение элементов, учитывая их естественный порядок (как у natsort)
  • SORT_FLAG_CASE – сортировка элементов массива php без учёта регистра (можно объединять с SORT_STRING или SORT_NATURAL побитовым ИЛИ).

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

Наш тестовый массив после вызова функции sort() будет выглядеть следующим образом:

Array ( => 9 => 11 => 18)

Как видите, после сортировки массива по значениям, значения их ключей также поменялись, т.к. sort работает без сохранения связи «ключ-значение», о чём говорится в официальной документации php.

В итоге, данный вариант подойдёт для подавляющего большинства случаев.

rsort($array, $flag); — функция, являющаяся антагонистом sort. Антагонистом, потому что она производит сортировку массива таким же образом, только не по возрастанию, а по убыванию, т.е. первыми будут идти элементы массива php с самыми большими значениями.

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

Array ( => 18 => 11 => 9)

asort($array, $flag); — функция php для сортировки массива по значению, механизм работы которой также очень похож на sort.

За тем лишь исключением, что она позволяет производить сортировку массива php по значению его элементов с сохранением связи «ключ — значение».

Таким образом, данная функция отлично подходит для сортировки ассоциативных массивов php , т.е. структур, где данная связь логична и важна.

Элементы будут расположены по возрастанию, т.к. она позволяет производить сортировку ассоциативного массива php по значению c сохранением ключей.

Также можно передавать два параметра. Наш тестовый массив примет следующий вид:

Array ( => 9 => 11 => 18)

Как видите, отличие от sort только в сохранении ключей у значений, по которым происходит сортировка массива php. Это и называется сохранением связи «ключ-значение», которая невероятно важна при сортировке ассоциативных массивов php.

arsort($array, $flag); — еще одна функция php для сортировки массива по значению. Антагонист asort.

Работает по тому же принципу, что и упомянутая функция, только сортировка массива php в данном случае будет по убыванию. Также является отличным вариантом при сортировке ассоциативных массивов php.

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

Array ( => 18 => 11 => 9)

Функции продвинутой сортировки массива php по значению

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

Эта особенность делает их пригодными для решения различных нестандартных задач, порой весьма интересных ��

natsort($array); — данная функция вносит разнообразие в семейку sort-подобных решений, т.к. механизм её работы в корне отличается от них. У natsort есть всего один-единственный входной параметр – это сортируемый массив, значения которого будут расположены в порядке, привычном для человека. Такой алгоритм носит название «natural ordering», что по-русски означает «естественный порядок». Для того, чтобы был понятен смысл данного утверждения, мы в качестве примера возьмём другой массив:

Array ( => ученик5 => ученик1 => ученик10)

Кроме того, функция natsort сохраняет связь «ключ-значение». Поэтому её работу мы будет сравнивать с asort, которая максимально похожа на неё. После вызова последней наш массив примет следующий вид:

Array ( => ученик1 => ученик10 => ученик5)

Если же вызвать natsort, то итоговый массив будет таким:

Array ( => ученик1 => ученик5 => ученик10)

Думаю, разница вам теперь видна и принцип работы natsort для вас будет понятен:-)

shuffle($array); — замечательная и очень полезная функция, с помощью которой можно перемешать массив php и разместить его элементы в случайном порядке.

Очень удобно, когда нужно расположить товары Интернет-магазина в категории или на другой странице в случайном порядке или при переходе на сайт-визитку показывать пользователям различные блоки информации каждый раз в разной последовательности.

При этом связь «ключ-значение» не сохраняется. То есть, массив, используемый нами в предыдущем примере, лично у меня принял вид:

Array ( => ученик10 => ученик5 => ученик1)

Причём, после каждого вызова функции порядок элементов будет различный.

Рассмотренные нами ранее функции являются достаточно простыми и механизм их работы понятен. В качестве параметра передаётся массив, содержимое которого нужно отсортировать по значениям его элементов, а также флаг, который может изменить поведение сортировки (без него спокойно можно обойтись).


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

Одним из таких задач является php по нужному полю.

Чтобы наглядно показать вам работу следующих функций, для примера возьмём следующий массив:

Array ( => Array ( => 32) => Array ( => 11) => Array ( => 27))

Как вы видите, он многомерный, т.к. его элементами являются массивы, структура которых идентична: они все имеют поле с ключом «id». И теперь наша задача – рассортировать эти элементы по возрастанию, т.е. чтобы в главном массиве элементы были расположены в соответствии со значением полей в подмассивах.

Нужно сказать, довольно распространённая задача. Решить её нам помогут следующие функции:

usort($array, ‘function’); — функция php сортировки многомерного массива по нужному полю.

Позволяет сделать сортировку элементов массива php без сохранения связи «ключ-значение» в соответствии с пользовательской функцией, имя которой передаётся в качестве второго параметра при вызове usort.

Сама функция описывается отдельно. Касательно нашего примера, для сортировки элементов многомерного массива php по полю [‘id’] в порядке возрастания пользовательская функция будет иметь следующий вид:

Function myCmp($a, $b) < if ($a[" ] >$b[«id»] ? 1: -1; >

Всё, что нам теперь нужно, чтобы запустить сортировку, это сделать вызов функции usort($array, ‘myCmp’); в необходимом месте кода. В качестве первого параметра указывает имя переменной массива.

В итоге мы получим следующее:

Array ( => Array ( => 11) => Array ( => 27) => Array ( => 32))

uasort($array, ‘function’); — ещё одна функция php сортировки многомерного массива по нужному полю.

Работает аналогично usort, но сохраняет связь «ключ-значение», что делает данную функцию пригодной для сортировки многомерных ассоциативных массивов.

Пользовательская функция для нашего примера будет та же самая. Результаты её выполнения будут выглядеть так:

Array ( => Array ( => 11) => Array ( => 27) => Array ( => 32))

Для изменения порядка сортировки элементов и внесения каких-то дополнительных преобразований данных необходимо будет править именно пользовательскую функцию, как вы могли догадаться и сами ��

Например, если у вас в массивах, которые являются элементами исходного, будет содержаться поле [‘name’] со строковым значением, то пользовательская функция для сортировки многомерного массива php по этому полю в порядке возрастания будет выглядеть так:

Сортировка массивов php с применением пользовательских функций — вариант не самый простой, но зато очень гибкий в настройке, и если овладеть им, то он станет вашим излюбленным решением.

array_multisort($array1, $array2, $flag); — напоследок я приберёг самую страшную и малопонятную функцию php для сортировки массива. В качестве входных параметров она принимает два массива и те же флаги сортировки, которые можно указывать у sort-подобных функций. Работает array_multisort следующим образом: первый параметр – сортируемый массив, в качестве второго массива указывается порядок сортировки первого, после чего второй массив сортируется по аналогии с первым. Вместо массива, отражающего порядок сортировки, можно использовать константы SORT_DESC для сортировки массива по убыванию и SORT_ASC по возрастанию. Ко всей этой путанице ещё можно добавлять флаги сортировки, которые могут идти после всех массивов.

$books = array(32, 11, 27); $sort_array = array(1, 2, 3); array_multisort($books, $sort_array);

В данном примере я произвёл сортировку простого одномерного массива $books в соответствии с массивом $sort_array. В результате первый массив принял следующий вид:

Array ( => 11 => 27 => 32)

А второй стал таким:

Array ( => 2 => 3 => 1)

То есть, он отсортировался в соответствии с первым. Вот такая вот петрушка ��

Более детально об array_multisort рассказано на следующем видео. Также там вы найдёте дополнительные примеры её использования:

С помощью данной функции также можно производить сортировку многомерных массивов:

$books = array(array(32), array(11), array(27)); $sort_array = array(1, 2, 3); array_multisort($books, $sort_array);

Массив $books будет выглядеть так:

Array ( => Array ( => 11) => Array ( => 27) => Array ( => 32))

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

Вот такой своеобразный «снежный ком» в php.

При сортировке массива php с помощью данной функции для ассоциативных массивов связь «ключ-значение» сохраняется, а для числовых – нет.

Программисты, которые производили тестирование работы различных функций, отмечают, что при сортировке многомерного массива php array_multisort показывает лучшие результаты, чем usort.

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

Про себя я могу сказать, что я немного недолюбливаю array_multisort из-за её запутанности и повышенного мозгового напряжения, которым сопровождаются попытки представить итоговый массив, отсортированный с её помощью.

Поэтому я стараюсь не пользоваться ей без особой надобности, отдавая предпочтение usort и более простым функциям, к чему призываю и вас ��

Рассмотренные нами ранее функции позволяют производить сортировку массивов в php по значению элементов. Давайте поговорим о том, как можно произвести аналогичное действие по ключам элементов.

Функции php для сортировки массива по ключу

Перед тем, как мы перейдём к обзору функций данной группы я хотел бы сказать, что у всех них есть одна общая черта – все они сохраняют отношение «ключ-значение». А иначе, собственно говоря, и быть не могло, т.к. тогда от них не было бы смысла ��

Такая вот особенность. Рассмотрим каждую функцию поподробнее.

ksort($array, $flag); — функция является аналогом asort, только упорядочивание элементов в массиве будет происходить не по значениям, а по ключам.

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

Для демонстрации его работы вернёмся к примеру, описанному в самом начале статьи:

Array ( => 11 => 18 => 9)

Если сделать его сортировку с помощью ksort, то в результате он примет следующий вид:

Array ( => 18 => 9 => 11)

Думаю, всё просто и понятно.

krsort($array, $flag); — ещё одна функция php для сортировки массива по ключу, очень похожая на предыдущую.

Единственное отличие заключается в том, что она производит сортировку массива php по убыванию. То есть, она является антагонистом ksort, как и rsort для sort.

У неё также два входных параметра: сортируемый массив и один из ключей. После её запуска наш пример примет вид:

Array ( => 11 => 9 => 18)

Думаю, комментарии излишни ��

ukrsort($array, ‘function’); — аналог упомянутой ранее функции php для сортировки массива по ключу — usort.

Работает по тому же принципу: сохраняет отношение «ключ-значение» и сортировка массива php производится в соответствии с пользовательской функцией, имя которой передаётся вторым параметром. Первый параметр неизменный – это сортируемый массив.

Отличие от usort заключается в том, что сортировка происходит по ключам элементов.

Для наглядности работы данной функции используем следующий пример:

Array ( => 40 => 0 => 10)

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

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

Напоминаю, что использовать её нужно только в том случае, когда ключи элементов массива несут какую-то смысловую нагрузку. В противном же случае, лучше использовать usort или другие, более простые функции.

Вот наша статья и подошла к концу (лайк, если дочитал до этого места) ��

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

Признаю, что публикация вышла довольно объёмной и трудной для единоразового чтения. Зато каждый раз, когда вам потребуется сортировка массива php , вы всегда сможете обратиться к данной статье за описанием требуемой вам функции и посмотреть примеры её использования.

Надеюсь, информация была для вас полезна ��

Сортировка массива php различными способами

Сегодня я решил немного отвлечься от создания сайтов на CMS и поговорить с вами о различных «плюшках», которые могут понадобиться вам при доработке уже готовых решений.

И одна из них, с которой лично мне приходится достаточно часто встречаться на работе, – это сортировка массива php.

Такие частые встречи были обусловлены тем, что, как показывает практика, люди любят время от времени, для разнообразия, менять последовательность вывода объектов на своём сайте – будь то товары в Интернет-магазине, сообщения пользователей на форуме или блоки информации на сайтах-визитках.

Если вы решили прочитать данную статью, то, скорее всего, вы прекрасно знаете, что такое массив, какие они бывают и что за зверь такой «php». Поэтому я не буду сильно углубляться в эти понятия.

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

Немного теории о массивах php

PHP – это серверный язык программирования. Серверный, потому что скрипты, которые запускаются пользователями через веб-интерфейс (Интернет-браузер), хранятся и выполняются на сервере.

PHP-скрипты скрыты от взора обычного пользователя. В окне ваших браузеров вы видите только результаты их выполнения.

Массив в программировании – это совокупность каких-то данных. Состоят они из элементов массива, которые представляют собой пары [индекс] => [значение].

Массивы бывают статические, динамические, гетерогенные и т.д. (целая наука) �� Нам же для работы с ними вполне хватит классификации на одномерные и многомерные.

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

Одномерый массив php:

Многомерный массив php:

Заметили? Если нет – обратите внимание на элементы многомерного массива php. Они сами являются массивами. Т.е. многомерный массив – это совокупность массивов. Уровень их вложенности может быть сколько угодно большим.

Теперь, думаю, точно понятно ��

Также ещё хотелось бы отдельно выделить понятие ассоциативного массива php. В реальной жизни они не так распространены, как обычные, но всё же имеют место быть.

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

Примером ассоциативного массива может служить следующая конструкция:

Как видите, здесь значения ключей и значений элементов массива тесно связаны и ни в коем случае нельзя разрывать эту связь. Благодаря этому ассоциативные массивы очень часто называют «словарями» или «справочниками».

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

В самом php массивы создаются двумя способами:

  1. $books = array(‘Азбука’, ‘Букварь’, ‘Словарь); или $books = array(‘azb’ => ‘Азбука’, ‘buk’ => ‘Букварь’, ‘slov’ => ‘Словарь’); Второй вариант используется, когда элементу нужно явно указать ключевое поле (актуально для ассоциативных массивов). Если его не указать, по умолчанию ключи элементов массива будут числами. Начиная с 0 (нуля).
  2. $books[0] = ‘Азбука’; $books[1] = ‘Букварь’; $books[2] = ‘Букварь’;

В обоих случаях $books будет являться массивом. Так что, если вы встретите в коде своего сайта такие конструкции, это уже не будет для вас чем-то непонятным ��

Если вы хотите узнать о массивах php более подробно, то рекомендую вашему вниманию следующее видео:

Напомню, что для того, чтобы увидеть структуру массива у себя на экране, после объявления массива в коде сайта необходимо прописать следующую конструкцию:

Если распечатываемая вами переменная будет являться массивом, то текст будет начинаться со следующей строки:

И ещё несколько слов о теме нашей статьи – сортировке массивов php.

Как вы могли понять, данные в массивах структурированы и элементы расположены в определённой последовательности. Для того, чтобы изменить её, нам как раз и понадобится сортировка массива php, которая реализована готовыми функциями языка.

Поэтому всё, что нам нужно сделать – это вызвать требуемую функцию после объявления массива, указав его в качестве параметра.

Переходим к обзору самих функций.

Функции сортировки массива php

Их полный перечень представлен в официальной документации языка php:

Для того, чтобы произвести сортировку массива php с помощью какой-то конкретной функции, нужно будет вызвать её после объявления массива и заполнения его значениями, указав ей в качестве параметров наш массив. Например:

Рассмотрим вкратце функционал каждой из них. Функции будут указаны в том формате, в котором их нужно будет вызывать в коде, т.е. «название(параметр1, параметр2, …);».

Не забудьте после вызова функции поставить «;», т.к. без неё на экране появится красивое сообщение об ошибке ��

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

Итак, как же можно произвести сортировку массива в нужном порядке на php?

Функции простой сортировка массива php по значению

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

Если после него у вас остались вопросы, то более подробную информацию по каждой функции вы можете найти ниже.

sort($array, $flag); — одна из самых простых и востребованных функций. Позволяет отсортировать массив по возрастанию на php с учетом значений элементов, т.е. они будут расположены от меньшего значения к большему. В качестве параметров принимает переменную массива и один из флагов сортировки, который позволяет изменить поведение сортировки.

  • SORT_REGULAR – элементы сравниваются без изменения типов
  • SORT_NUMERIC – элементы сравниваются как числа
  • SORT_STRING – элементы сравниваются как строки
  • SORT_LOCALE_STRING – строковое сравнение, но с учетом текущей локали.
  • SORT_NATURAL – строковое сравнение элементов, учитывая их естественный порядок (как у natsort)
  • SORT_FLAG_CASE – сортировка элементов массива php без учёта регистра (можно объединять с SORT_STRING или SORT_NATURAL побитовым ИЛИ).

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

Наш тестовый массив после вызова функции sort() будет выглядеть следующим образом:

Как видите, после сортировки массива по значениям, значения их ключей также поменялись, т.к. sort работает без сохранения связи «ключ-значение», о чём говорится в официальной документации php.

В итоге, данный вариант подойдёт для подавляющего большинства случаев.

rsort($array, $flag); — функция, являющаяся антагонистом sort. Антагонистом, потому что она производит сортировку массива таким же образом, только не по возрастанию, а по убыванию, т.е. первыми будут идти элементы массива php с самыми большими значениями.

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

asort($array, $flag); — функция php для сортировки массива по значению, механизм работы которой также очень похож на sort.

За тем лишь исключением, что она позволяет производить сортировку массива php по значению его элементов с сохранением связи «ключ — значение».

Таким образом, данная функция отлично подходит для сортировки ассоциативных массивов php, т.е. структур, где данная связь логична и важна.

Элементы будут расположены по возрастанию, т.к. она позволяет производить сортировку ассоциативного массива php по значению c сохранением ключей.

Также можно передавать два параметра. Наш тестовый массив примет следующий вид:

Как видите, отличие от sort только в сохранении ключей у значений, по которым происходит сортировка массива php. Это и называется сохранением связи «ключ-значение», которая невероятно важна при сортировке ассоциативных массивов php.

arsort($array, $flag); — еще одна функция php для сортировки массива по значению. Антагонист asort.

Работает по тому же принципу, что и упомянутая функция, только сортировка массива php в данном случае будет по убыванию. Также является отличным вариантом при сортировке ассоциативных массивов php.

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

Функции продвинутой сортировки массива php по значению

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

Эта особенность делает их пригодными для решения различных нестандартных задач, порой весьма интересных ��

natsort($array); — данная функция вносит разнообразие в семейку sort-подобных решений, т.к. механизм её работы в корне отличается от них. У natsort есть всего один-единственный входной параметр – это сортируемый массив, значения которого будут расположены в порядке, привычном для человека. Такой алгоритм носит название «natural ordering», что по-русски означает «естественный порядок». Для того, чтобы был понятен смысл данного утверждения, мы в качестве примера возьмём другой массив:

Кроме того, функция natsort сохраняет связь «ключ-значение». Поэтому её работу мы будет сравнивать с asort, которая максимально похожа на неё. После вызова последней наш массив примет следующий вид:

Если же вызвать natsort, то итоговый массив будет таким:

Думаю, разница вам теперь видна и принцип работы natsort для вас будет понятен:-)

shuffle($array); — замечательная и очень полезная функция, с помощью которой можно перемешать массив php и разместить его элементы в случайном порядке.

Очень удобно, когда нужно расположить товары Интернет-магазина в категории или на другой странице в случайном порядке или при переходе на сайт-визитку показывать пользователям различные блоки информации каждый раз в разной последовательности.

При этом связь «ключ-значение» не сохраняется. То есть, массив, используемый нами в предыдущем примере, лично у меня принял вид:

Причём, после каждого вызова функции порядок элементов будет различный.

Рассмотренные нами ранее функции являются достаточно простыми и механизм их работы понятен. В качестве параметра передаётся массив, содержимое которого нужно отсортировать по значениям его элементов, а также флаг, который может изменить поведение сортировки (без него спокойно можно обойтись).

Илон Маск рекомендует:  Что такое код dbx_close

Далее последуют функции, которые позволяют сортировать массивы php по значению элементов в соответствии с некоторой пользовательской функцией. Это, что называется, «вариант для продвинутых» ��

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

Одним из таких задач является сортировка многомерного массива php по нужному полю.

Чтобы наглядно показать вам работу следующих функций, для примера возьмём следующий массив:

Как вы видите, он многомерный, т.к. его элементами являются массивы, структура которых идентична: они все имеют поле с ключом «id». И теперь наша задача – рассортировать эти элементы по возрастанию, т.е. чтобы в главном массиве элементы были расположены в соответствии со значением полей в подмассивах.

Нужно сказать, довольно распространённая задача. Решить её нам помогут следующие функции:

usort($array, ‘function’); — функция php сортировки многомерного массива по нужному полю.

Позволяет сделать сортировку элементов массива php без сохранения связи «ключ-значение» в соответствии с пользовательской функцией, имя которой передаётся в качестве второго параметра при вызове usort.

Сама функция описывается отдельно. Касательно нашего примера, для сортировки элементов многомерного массива php по полю [‘id’] в порядке возрастания пользовательская функция будет иметь следующий вид:

Всё, что нам теперь нужно, чтобы запустить сортировку, это сделать вызов функции usort($array, ‘myCmp’); в необходимом месте кода. В качестве первого параметра указывает имя переменной массива.

В итоге мы получим следующее:

uasort($array, ‘function’); — ещё одна функция php сортировки многомерного массива по нужному полю.

Работает аналогично usort, но сохраняет связь «ключ-значение», что делает данную функцию пригодной для сортировки многомерных ассоциативных массивов.

Пользовательская функция для нашего примера будет та же самая. Результаты её выполнения будут выглядеть так:

Для изменения порядка сортировки элементов и внесения каких-то дополнительных преобразований данных необходимо будет править именно пользовательскую функцию, как вы могли догадаться и сами ��

Например, если у вас в массивах, которые являются элементами исходного, будет содержаться поле [‘name’] со строковым значением, то пользовательская функция для сортировки многомерного массива php по этому полю в порядке возрастания будет выглядеть так:

Сортировка массивов php с применением пользовательских функций — вариант не самый простой, но зато очень гибкий в настройке, и если овладеть им, то он станет вашим излюбленным решением.

array_multisort($array1, $array2, $flag); — напоследок я приберёг самую страшную и малопонятную функцию php для сортировки массива. В качестве входных параметров она принимает два массива и те же флаги сортировки, которые можно указывать у sort-подобных функций. Работает array_multisort следующим образом: первый параметр – сортируемый массив, в качестве второго массива указывается порядок сортировки первого, после чего второй массив сортируется по аналогии с первым. Вместо массива, отражающего порядок сортировки, можно использовать константы SORT_DESC для сортировки массива по убыванию и SORT_ASC по возрастанию. Ко всей этой путанице ещё можно добавлять флаги сортировки, которые могут идти после всех массивов.

В данном примере я произвёл сортировку простого одномерного массива $books в соответствии с массивом $sort_array. В результате первый массив принял следующий вид:

А второй стал таким:

То есть, он отсортировался в соответствии с первым. Вот такая вот петрушка ��

Более детально об array_multisort рассказано на следующем видео. Также там вы найдёте дополнительные примеры её использования:

С помощью данной функции также можно производить сортировку многомерных массивов:

Массив $books будет выглядеть так:

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

Вот такой своеобразный «снежный ком» в php.

При сортировке массива php с помощью данной функции для ассоциативных массивов связь «ключ-значение» сохраняется, а для числовых – нет.

Программисты, которые производили тестирование работы различных функций, отмечают, что при сортировке многомерного массива php array_multisort показывает лучшие результаты, чем usort.

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

Про себя я могу сказать, что я немного недолюбливаю array_multisort из-за её запутанности и повышенного мозгового напряжения, которым сопровождаются попытки представить итоговый массив, отсортированный с её помощью.

Поэтому я стараюсь не пользоваться ей без особой надобности, отдавая предпочтение usort и более простым функциям, к чему призываю и вас ��

Рассмотренные нами ранее функции позволяют производить сортировку массивов в php по значению элементов. Давайте поговорим о том, как можно произвести аналогичное действие по ключам элементов.

Функции php для сортировки массива по ключу

Перед тем, как мы перейдём к обзору функций данной группы я хотел бы сказать, что у всех них есть одна общая черта – все они сохраняют отношение «ключ-значение». А иначе, собственно говоря, и быть не могло, т.к. тогда от них не было бы смысла ��

Такая вот особенность. Рассмотрим каждую функцию поподробнее.

ksort($array, $flag); — функция является аналогом asort, только упорядочивание элементов в массиве будет происходить не по значениям, а по ключам.

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

Для демонстрации его работы вернёмся к примеру, описанному в самом начале статьи:

Если сделать его сортировку с помощью ksort, то в результате он примет следующий вид:

Думаю, всё просто и понятно.

krsort($array, $flag); — ещё одна функция php для сортировки массива по ключу, очень похожая на предыдущую.

Единственное отличие заключается в том, что она производит сортировку массива php по убыванию. То есть, она является антагонистом ksort, как и rsort для sort.

У неё также два входных параметра: сортируемый массив и один из ключей. После её запуска наш пример примет вид:

Думаю, комментарии излишни ��

ukrsort($array, ‘function’); — аналог упомянутой ранее функции php для сортировки массива по ключу — usort.

Работает по тому же принципу: сохраняет отношение «ключ-значение» и сортировка массива php производится в соответствии с пользовательской функцией, имя которой передаётся вторым параметром. Первый параметр неизменный – это сортируемый массив.

Отличие от usort заключается в том, что сортировка происходит по ключам элементов.

Для наглядности работы данной функции используем следующий пример:

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

В результате наш массив примет следующий вид:

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

Напоминаю, что использовать её нужно только в том случае, когда ключи элементов массива несут какую-то смысловую нагрузку. В противном же случае, лучше использовать usort или другие, более простые функции.

Вот наша статья и подошла к концу (лайк, если дочитал до этого места) ��

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

Признаю, что публикация вышла довольно объёмной и трудной для единоразового чтения. Зато каждый раз, когда вам потребуется сортировка массива php, вы всегда сможете обратиться к данной статье за описанием требуемой вам функции и посмотреть примеры её использования.

Надеюсь, информация была для вас полезна ��

Подписывайтесь на обновления проекта и вступайте в сообщества в социальных сетях, где вы всегда сможете получить ответ на интересующий вас вопрос и поучаствовать в обсуждениях, помогая другим в создании сайта своими руками!

Не будьте пассивными и вам обязательно воздастся ��

Всем удачи и до новых встреч!

P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.

И с друзьями не забудьте поделиться ��

Как отсортировать массив по определенному ключу?

В БД хранятся куча строк, содержащие в себе int’овые значения.

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

Как отсортировать эту новую матрицу по ключу rating?

  • Вопрос задан более трёх лет назад
  • 217 просмотров

Продуктивнее отсортировывать их при вызове из mysql

select * from table order by rating desc

а если нужно в php строго то функции сортировки ksort, usort и другие при просмотре их будут ссыдки на другие функции которые сортируют по любому признаку, ключ, значение, по возрастанию, с сохранением связи ключь значение, без сохранения

в конце списка функции сортировки, выберите что подходит лучше

Функции сортировки php. Сортировка массива по ключам. Сортировка по ключам

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

Массив в алфавитном порядке PHP

$value) <
echo «$value «; // отобразим только слова, без индекса
>
?>

Демонстрация Скачать исходники
В демонстрации можете посмотреть работу скрипта. При желании можете также скачать архив с файлом.

Если у Вас сервер не на Windows, то нужно будет установить другие локали или сразу несколько:

(LC_ALL, «ru_RU.CP1251», «rus_RUS.CP1251», «Russian_Russia.1251»);
// Выведет ru_RU.CP1251 для FreeBSD
// Выведет rus_RUS.CP1251 для линукса
// Выведет Russian_Russia.1251 для Windows

Опережу ответом один из вопросов — локаль для Украины в PHP выглядит так:

Как установить локаль для других кодировок в PHP?

Второй способ выстроить массив в алфавитном порядке PHP

=> а
=> б
=> в
=> г
=> д
=> е
=> ё
=> ж
=> з
=> и
=> й
=> к
=> л
=> м
=> н
=> о
=> п
=> р
=> с
=> т
=> у
=> ф
=> х
=> ц
=> ч
=> ш
=> щ
=> ъ
=> ы
=> ь
=> э
=> ю
=> я
И переберите по первой букве второй массив.
Первую букву какого-либо элемента массива вычисляем так:

$city=»Москва»; // например элемент с индексом 1

$first_letter = mb_substr($city,0,1,»UTF-8″); // получим букву «М»
Поскольку работаем с русскими буквами (многобайтной кодировкой), то использовать лучше функцию mb_substr , а в конце лучше точно указать кодировку данных переменной или массива, в нашем случае UTF-8.

Спасибо за внимание! Надеюсь информация была полезна. Если есть вопросы, то пишите в комментариях.

Сортировка является одной из наиболее важных процедур при работе с массивами. Чтобы осознать ее важность достаточно вспомнить о таких действиях, как, например, сортировка фильмов в алфавитном порядке или сортировка каких-либо цен по возрастанию или убыванию и т.д. Согласитесь, очень распространенные действия для различных приложений! Сегодня мы поговорим, как производить сортировку элементов массива по заданным условиям.

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

Задачи могут быть различными, но инструменты, которые мы при этом будем использовать останутся стандартными. Эти инструменты – специальные функции, которые и применяются для сортировки элементов массива.

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

Давайте на примерах разберем эти функции и посмотрим, как они работают.

Сортируем массивы-списки в алфавитном и обратном порядке

Для начала давайте познакомимся с достаточно простой и понятной функцией sort() .

Она позволит нам отсортировать элементы массива по возрастанию или, если эти элементы строковые – в алфавитном порядке.

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

$Mass = array(«Катя», «Аня», «Лена»,»Андрей»); sort($Mass); print_r($Mass); ?>

А результат будет следующим. Как Вы можете видеть на скриншоте справа, элементы отсортированы в алфавитном порядке. Если вместо строковых элементов у нас будут числа, то эта функция также отсортирует числа по возрастанию. Можете проверить это самостоятельно.

Также существует и функция, которая делает обратное действие, то есть сортирует элементы массива по убыванию или в порядке обратном алфавитному.

Эта функция называется rsort() . Работает она следующим образом:

$Mass = array(«Катя», «Аня», «Лена»,»Андрей»); rsort($Mass); print_r($Mass); ?>

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

Думаю, что с этими функциями все предельно ясно. Протестируйте их со своими массивами и у Вас не останется никаких вопросов.

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

Все замечательно, однако, с ассоциативными массивами мы уже не сможем применить данные функции, так как они разрывают связь значения с ключом массива. Поэтому нам нужно познакомиться еще с некоторыми функциями, которые позволят нам сортировать ассоциативные массивы.

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

Давайте начнем с сортировки по значениям.

Для того, чтобы отсортировать значения ассоциативного массива в алфавитном порядке, мы применим функцию asort() .

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

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; asort($Mass); print_r($Mass); ?>

Как Вы видите, значения ассоциативного массива отсортированы в алфавитном порядке, однако, их связь с ключами сохранена.

Таким же образом работает, и функция arsort() , за тем исключением, что она сортирует значения ассоциативного массива в обратном порядке.

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; arsort($Mass); print_r($Mass); ?>

Здесь опять же мы можем видеть, что значения элементов массива сохраняют свою связь с ключами, но отсортированы в обратном порядке.

Тот же самый ассоциативный массив мы можем отсортировать и по ключам.

Как Вы, наверное, уже догадались это можно сделать в алфавитном или обратном порядке.

Для того, чтобы сортировать массив по ключам в алфавитном порядке, нам понадобится функция ksort() .

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; ksort($Mass); print_r($Mass); ?>

Массив отсортирован по ключам в алфавитном порядке.

Для того, чтобы отсортировать массив по его ключам в обратном порядке, применяется функция krsort() .

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; krsort($Mass); print_r($Mass); ?>

Думаю, что из скриншота все понятно.

Пользовательская сортировка

Также мы можем задать и свои порядок сортировки, то есть создать пользовательскую сортировку.

Для этого также в php предусмотрены специальные функции.

Для пользовательской сортировки списков предусмотрена функция usort() .

Она будет принимать два аргумента. Первый аргумент – это наш массив; второй аргумент – будет содержать имя функции, сравнивающей два элемента.

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

1 – если первый элемент сравнения больше второго;

-1 – если второй больше первого;

0 – если элементы равны.

Таким образом мы, например, можем отсортировать элементы массива по возрастанию их длины.

Для этого сначала объявим сам массив, который будет содержать строковые элементы различной длины.

После этого воспользуемся функцией для пользовательской сортировки usort() . Ей передадим в качестве аргументов: имя нашего массива и имя функции, которую мы создали для сравнения элементов.

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

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

Также мы можем сделать пользовательскую сортировку ассоциативного массива по его ключам. Для этого нам понадобится функция uksort() и сам ассоциативный массив.

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

Ключи элементов массива отсортированы по возрастанию их длины.

И также мы можем создать пользовательскую сортировку ассоциативного массива по значениям его элементов. В этом нам поможет функция uasort() .

Принцип все тот же.

Теперь массив отсортирован по увеличению длин его значений.

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

Чтобы хорошенько понять, как работает пользовательская сортировка, нужно попрактиковаться и попробовать написать какую-то свою функцию сравнения.

Однако, теперь, я думаю, у Вас есть полное представление о том, как можно сортировать элементы массива и каким образом эти отсортированные элементы использовать.

Практикуйтесь, пишите Ваши комментарии и делитесь статьей с друзьями при помощи кнопок социальных сетей.

Если Вы еще не подписаны на обновления блога, то подписывайтесь. Форма подписки находится ниже.

С Вами была Анна Котельникова. До встречи в следующих статьях.

Расстановка элементов массива в обратном порядке.
Синтаксис:

Array array_reverse(array arr [, bool preserve_keys])

Функция array_reverse() возвращает массив, элементы которого следуют в обратном порядке относительно массива, переданного в параметре. При этом связи между ключами и значениями не теряются, если дополнительный параметр preserve_keys = TRUE.

Пример использования функции array_reverse():

Этот пример сделает оба массива $result и $result_keyed с одинаковыми значениями, но различными ключами. Распечатка массивов $result и $result_keyed будет следующей:

Примечание: Второй параметр preserve_keys был добавлен в PHP 4.0.3.

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

Void natcasesort(array arr)

Функция natcasesort() сортирует массив arr в естественном для человека порядке с сохранением индексных ассициаций.
Эта функция схожа с natsort(), только не учитывает регистр символов.
Пример использования функции natcasesort():

Приведенный пример выведет следующее:

Стандартная сортировкаArray(
=> IMG0.png
=> IMG3.png
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Естественная сортировка (без учета регистра)
Array(
=> IMG0.png
=> img1.png
=> img2.png
=> IMG3.png
=> img10.png
=> img12.png
)

Функция поддерживается PHP 4, PHP 5

Пользовательская сортировка ассоциативного массива с сохранением индексных ассоциаций.
Синтаксис:

Bool uasort(array arr, function cmp_function)

Функция uasort() сортирует массив arr с сохранением индексных ассоциаций, используя для сравнения индексов элементов пользовательскую функцию, указанную аргументом cmp_function.
Эта функция используется главным образом когда соответствие индексов и значений массива существенно.
Функция uasort() возвращает true в случае успешного завершения сортировки, и false в противном случае.
Замечание: Смотрите функции usort() и uksort() для написания пользовательской функции.
Функция поддерживается PHP 3 >=3.0.4, PHP 4, PHP 5

Пользовательская сортировка массива по ключам.
Синтаксис:

Bool uksort(array arr, function cmp_function)

Функция uksort() сортирует массив arr по индексам с сохранением индексных ассоциаций, используя для сравнения индексов элементов пользовательскую функцию, указанную в аргументе cmp_function. В эту функцию передаются два сравниваемых индекса элементов, а она должна вернуть положительное или отрицательное число или 0.

Функция uksort() возвращает true в случае успешного завершения сортировки, и FALSE в противном случае.
Довольно часто нам приходится сортировать что-то по более сложному критерию, чем просто по алфавиту. Например, пусть в $Files храниться список имен файлов и подкаталогов в текущем каталоге. Возможно, мы захотим вывести этот список не только в лексографическом порядке, но также чтобы все каталоги предшествовали файлам. В этом случае нам стоит воспользоваться функцией uksort(), написав предварительно функцию сравнения с двумя параметрами, как того требует uksort().

1 пример использования функции uksort():

// Эта функция должна сравнивать значения $f1 и $f2 и возвращать:
// -1, если $f1 $f2
// Под понимаем следование этих имен в выводимом спискеfunction FCmp($f1,$f2)
< // Каталог всегда предшествует файлу
if(is_dir($f1) && !is_dir($f2)) return -1;
// Файл всегда идет после каталога
if(!is_dir($f1) && is_dir($f2)) return 1;
// Иначе сравниваем лексиграфически
if($f1 $f2) return 1; else return 0;
>
// Пусть $Files содержит массив с ключами — именами файлов
// в текущем каталоге. Отсортируем его.uksort($Files,»FCmp»); //передаем функцию сортировки «

Сортировать несколько массивов или многомерные массивы (PHP 4, PHP 5)

Bool array_multisort (array ar1 [, mixed arg [, mixed . [, array . ]]])

Функция array_multisort() может быть использована для сортировки сразу нескольких массивов или одного многомерного массива в соответствии с одной или несколькими размерностями. Эта функция сохраняет соответствие между ключами и соответствующими им значениями.

Входные массивы рассматриваются как столбцы таблицы, которую нужно отсортировать по строкам — такой подход напоминает поведение выражения SQL ORDER BY. Первый массив имеет проиоритет в процессе сортировки.

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

Значения, определяющие порядок сортировки:

SORT_ASC — сортировать в возрастающем порядке
SORT_DESC — сортировать в убывающем порядке

Флаги типа сортировки:

SORT_REGULAR — сравнивать элементы обычным образом
SORT_NUMERIC — сравнивать элементы, как если бы они были числами
SORT_STRING — сравнивать элементы, как если бы они были строками

Недопустимым является указание двух флагов сортировки одинакового типа после каждого массива. Флаги сортировки, переданные после аргумента ar1, применяются только к этому аргументу — перед тем, как функция начнет обрабатывать следующий массив, эти флаги снова принимают значения по умолчаниюt SORT_ASC и SORT_REGULAR.

Сортировка нескольких массивов

$ar1 = array («10», 100, 100, «a»);
$ar2 = array (1, 3, «2», 1);
array_multisort ($ar1, $ar2);

В вышеприведенном примере, после того, как будет осуществлена сортировка, первый массив будет содержать 10, «a», 100, 100. Второй — 1, 1, «2», 3. Элементы второго массива, соответствующие идентичным элементам первого (100 и 100), также будут отсортированы.

Сортировка многомерного массива

$ar = array (array («10», 100, 100, «a»), array (1, 3, «2», 1));
array_multisort ($ar, SORT_ASC, SORT_STRING,
$ar, SORT_NUMERIC, SORT_DESC);

В вышеприведенном примере, после сортировки, первый массив будет содержать 10, 100, 100, «a» (его элементы были отсортированы в возрастающем порядке так, как если бы они были строками), а второй массив будет содержать 1, 3, «2», 1 (элементы отсортированы как числа, в порядке убывания).

Отсортировать массив по значениям используя пользовательскую функцию для сравнения элементов (PHP 3 >= 3.0.3, PHP 4, PHP 5)

Bool usort (array &array, callback cmp_function)

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

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

Замечание: Если два элемента исходного массива равны, их порядок в отсортированном массиве неопределён. До PHP 4.0.6 пользовательские функции сохраняли для таких элеменов порядок в оригинальном массиве, но новый алгоритм сортировки, появившейся в версии 4.1.0 больше не использует это решение и не имеет другого эффективного.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример использования usort()

Замечание : Очевидно, что для этого тривиального случая более подходит функция sort().

Пример использования функцией usort() многомерных массивов

При сортировке многомерного массива переменные $a и $b содержат ссылки на первые два индекса массива.

Результат выполнения данного примера:

$fruits: apples
$fruits: grapes
$fruits: lemons

Пример использования usort() с методом класса

/* This is the static comparing function: */
function cmp_obj($a, $b)
<
$al = strtolower($a->name);
$bl = strtolower($b->name);
if ($al == $bl) <
return 0;
>
return ($al > $bl) ? +1: -1;
>
>

$a = new TestObj(«c»);
$a = new TestObj(«b»);
$a = new TestObj(«d»);

usort($a, array(«TestObj», «cmp_obj»));

Результат выполнения данного примера:

Перемешивание элементов массива.
Синтаксис:

Void shuffle(array arr)

Функция shuffle() «перемешивает» список, переданный ей первым параметром arr, так, чтобы его значения распределялись случайным образом. При этом измениться сам массив и ассоциативные массивы воспринимаются как списки.
Пример использования функции shuffle():

= 3.0.8, PHP 4, PHP 5

Сортировка массива по возрастанию.
Синтаксис:

Bool sort(array arr [, int sort_flags])


Функция sort() предназначена для сортировки массивов в порядке возрастания.
Замечание: Эта функция изменяет ключи у отсортированных значений. Т.е. любой ассоциативный массив воспринимается этой функцией как список. После упорядочивания последовательность ключей превращается в 0,1,2. а значения нужным образом перераспределяются. Как видим, связи между параметрами ключ=>значение не сохраняются, более того — ключи просто пропадают, поэтому сортировать что-либо, отличное от списка, вряд ли целесообразно.
Пример использования функции sort():

Этот пример выведет:

Fruits = applefruits = bananafruits = lemonfruits = orange

;
SORT_NUMERIC — сравнивает элементы как числа;
SORT_STRING — сравнивает элементы как строки.

Сортировка массива по убыванию.
Синтаксис:

Bool rsort (array array [, int sort_flags])

Функция rsort() сортирует массив array в порядке убывания (от высших значений к низшим).

Функция возвращает TRUE в случае успешного завершения, и FALSE в противном случае.
Пример использования функции rsort():

Этот пример выведет:

0 = orange
1 = lemon
2 = banana
3 = apple

Аргумент sort_flags задает следующие флаги сортировки:
SORT_REGULAR — сравнивает элементы «как есть»
Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка ассоциативного массива по возрастанию.
Синтаксис:

Bool asort(array arr [, int sort_flags])

Функция asort() сортирует массив, указанный в ее параметре, так, чтобы его значения шли в алфавитном (если это строки) или возрастающем (для чисел) порядке. При этом сохраняются связи между ключами и соответствующими им значениями, т.е. некоторые пары ключ=>значение просто «всплывают» наверх, а некоторые — наоборот, «опускаются».

Функция возвращает true в случае успешного завершения, и false в случае возникновения ошибки.
Пример использования функции asort():

«lemon», «a» => «orange», «b» => «banana», «c» => «apple»);
asort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) <
echo «$key = $valn»;
>
?>

Пример выведет следующее:

C = appleb = bananad = lemona = orange

Массив $fruits был отсортирован в возрастающем символьном порядке, при этом индексы массива были сохранены.

Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка ассоциативного массива по убыванию.
Синтаксис:

Bool arsort(array arr [, int sort_flags])

Функция arsort() сортирует массив arr по убыванию с сохранением индексных ассоциаций.
Эта функция используется главным образом там, где существенен порядок элемента в массиве.
Функция возвращает true в случае успешной сортировки, и false в случае возникновения ошибки.
Пример использования функции arsort():

«lemon», «a»=>»orange», «b»=>»banana», «c»=>»apple»);
arsort($arr);
reset($arr);
while(list ($key, $val) = each ($arr)) <
echo «$key = $vall»;
>

A = oranged = lemonb = bananac = apple

Массив $arr был отсортирован в убывающем символьном порядке, при этом индексы массива были сохранены.
Метод сортировки может быть изменен при помощи необязательного параметра sort_flags.
Этот параметр может указать, как сравнивать значения (как строки или как числа). Он может принимать следующие предопределенные значения:
SORT_REGULAR — нормальное сравение значений;
SORT_NUMERIC — сравнивать как числа;
SORT_STRING — сравнивать как строки.
Этот параметр был введен в PHP начиная с 4 версии.
Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка массива по возрастанию ключей.
Синтаксис:

Bool ksort(array arr [, int sort_flags])

Функция ksort() сортирует массив в порядке возрастания ключей с сохранением взаимосвязей ключей и значений. Эта функция особенно полезна при сортировке ассоциативных массивов.
Функция возвратит true, если все прошло успешно, и false в противном случае.
Пример использования функции ksort():

«lemon», «a»=>»orange», «b»=>»banana», «c»=>»apple»);
ksort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) <
echo «$key = $valn»;
>
?>

Данный пример выведет:

A = orangeb = bananac = appled = lemon

Аргумент sort_flags задает следующие флаги сортировки:
SORT_REGULAR — сравнивает элементы «как есть»
SORT_NUMERIC — сравнивает элементы как числа SORT_STRING — сравнивает элементы как строки
Функция поддерживается PHP 3, PHP 4, PHP 5

Сортировка массива по убыванию индексов.
Синтаксис:

Bool krsort(array arr [, int sort_flags])

Функция krsort() сортирует ключи в массиве arr в обратном порядке. При этом связка ключей и значений сохраняется. Эта функци полезна при сортировке ассоциативных массивов.
Функция возвращает true в случае успешного завершения, и false в противном случае.
Пример использования функции krsort():

«lemon», «a»=>»orange», «b»=>»banana», «c»=>»apple»);
krsort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) <
echo «$key = $valn»;
>
?>

Данный пример выведет:

D = lemonc = appleb = bananaa = orange

Аргумент sort_flags задает следующие флаги сортировки:
SORT_REGULAR — сравнивает элементы «как есть»
SORT_NUMERIC — сравнивает элементы как числа SORT_STRING — сравнивает элементы как строки
Функция поддерживается PHP 3 >= 3.0.13, PHP 4, PHP 5

Выполняет «естественную» сортировку массива.
Синтаксис:

Void natsort(array arr)

Функция natsort() сортирует массив arr в естественном для человека порядке с сохранением индексных ассициаций.
Пример использования функции natsort():

Этот пример выведет следующее:

Стандартная сортировкаArray(
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Естественная сортировкаArray(
=> img1.png
=> img2.png
=> img10.png
=> img12.png
)

Илон Маск рекомендует:  Всплывающее окно при уходе с сайта

Функция поддерживается PHP 4, PHP 5

Последнее обновление: 1.11.2015

Функция is_array

Функция is_array() проверяет, является ли переменная массивом, и если является, то возвращает true , иначе возвращает false . Например:

$isar = is_array($technics); echo ($isar==true)?»это массив»:»это не массив»;

Функции count/sizeof

Функция count() и sizeof() получают количество элементов массива:

$number = count($technics); // то же самое, что // $number = sizeof($technics); echo «В массиве technics $number элементов»;

Функции shuffle

Функция shuffle перемешивает элементы массивы случайным образом:

$os = array(«Windows 95», «Windows XP», «Windows Vista», «Windows 7», «Windows 8», «Windows 10»); shuffle($os); print_r($os); // один из возможных вариантов // Array ( => Windows 95 => Windows 7 => Windows Vista => Windows XP => Windows 10 => Windows 8)

Функции compact

Функция compact позволяет создать из набора переменных ассоциативный массив, где ключами будут сами имена переменных:

Apple II => Apple => 1978) ?>

Функция compact получает в скобках набор переменных. Каждая переменная указывается в кавычка без знака $. Результатом функции является новый массив.

Сортировка массивов

В PHP имеются два типа сортировки: сортировка строк по алфавиту и сортировка чисел по возрастанию/убыванию. Если сортируемые значения представляют строки, то они сортируются по алфавиту, если числа — то они сортируются в порядке возрастания чисел. PHP по умолчанию самостоятельно выбирает тип сортировки.

Для сортировки по возрастанию используется функция asort :

«Lenovo IdeaTab A3500», «samsung» => «Samsung Galaxy Tab 4», «apple» => «Apple iPad Air»); asort($tablets); echo »

    «; foreach ($tablets as $key => $value) < echo "
  • $key: $value «; > echo «

«; ?>

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

SORT_REGULAR: автоматический выбор сортировки

SORT_NUMERIC: числовая сортировка

SORT_STRING: сортировка по алфавиту

Укажем явно тип сортировки:

Чтобы отсортировать массив в обратном порядке, применяется функция arsort :

Сортировка по ключам

Функция asort производит сортировку по значениям элементов, но также существует и еще и сортировка по ключам. Она представлена функцией ksort :

Сортировка по ключам в обратном порядке выполняется функцией krsort() :

Естественная сортировка

Хотя выше описанные функции сортировки прекрасно выполняют свою работу, но их возможностей все-таки недостаточно. Например, отсортируем по возрастанию следующий массив:

Windows 10 => Windows 7 => Windows 8) ?>

Так как значения представляют строки, то PHP сортирует по алфавиту. Однако подобная сортировка не учитывает числа и регистр. Поэтому значение «Windows 10» будет идти в самом начале, а не в конце, как должно было быть. И для решения этой проблемы в PHP есть функция natsort() , которая выполняет естественную сортировку:

Windows 7 => Windows 8 => Windows 10) ?>

Если нам надо еще при этом, чтобы сортировка не учитывала регистр, то мы можем применить функцию natcasesort() .

Php array сортировка. Сортировка массива по ключам

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

Массив в алфавитном порядке PHP

$value) <
echo «$value «; // отобразим только слова, без индекса
>
?>

Демонстрация Скачать исходники
В демонстрации можете посмотреть работу скрипта. При желании можете также скачать архив с файлом.

Если у Вас сервер не на Windows, то нужно будет установить другие локали или сразу несколько:

(LC_ALL, «ru_RU.CP1251», «rus_RUS.CP1251», «Russian_Russia.1251»);
// Выведет ru_RU.CP1251 для FreeBSD
// Выведет rus_RUS.CP1251 для линукса
// Выведет Russian_Russia.1251 для Windows

Опережу ответом один из вопросов — локаль для Украины в PHP выглядит так:

Как установить локаль для других кодировок в PHP?

Второй способ выстроить массив в алфавитном порядке PHP

=> а
=> б
=> в
=> г
=> д
=> е
=> ё
=> ж
=> з
=> и
=> й
=> к
=> л
=> м
=> н
=> о
=> п
=> р
=> с
=> т
=> у
=> ф
=> х
=> ц
=> ч
=> ш
=> щ
=> ъ
=> ы
=> ь
=> э
=> ю
=> я
И переберите по первой букве второй массив.
Первую букву какого-либо элемента массива вычисляем так:

$city=»Москва»; // например элемент с индексом 1

$first_letter = mb_substr($city,0,1,»UTF-8″); // получим букву «М»
Поскольку работаем с русскими буквами (многобайтной кодировкой), то использовать лучше функцию mb_substr , а в конце лучше точно указать кодировку данных переменной или массива, в нашем случае UTF-8.

Спасибо за внимание! Надеюсь информация была полезна. Если есть вопросы, то пишите в комментариях.

Благодаря своей мощности и гибкости в работе массивы стали непременным атрибутом PHP . Причем, в ряде сложных ситуаций можно задействовать и двумерные массивы PHP . Данная статья посвящена сортировке многомерных массивов в PHP .

  • Многомерный массив;
  • Встроенные функции PHP usort () , uasort () или uksort () ;
  • Встроенные функции PHP strcasecmp() или strcmp() .

Реализация :
Допустим что, у нас есть массив:

$students = array (1 => array («name» => «Jack», «grade» => 98.5), 2 => array («name» => «Bill», «grade» => 90.1), 3 => array («name» => «Chloe», «grade» => 94.0), 4 => array («name» => «Taylor», «grade» => 95.1), 5 => array («name» => «Larry», «grade» => 94.6));

Здесь можно осуществить сортировку двумерного массива PHP по параметру grade ( оценка ) ( числовая сортировка ) или name ( имя ) ( сортировка в алфавитном порядке ).

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

Для сортировки многомерного массива мы задаем собственную функцию. Говорим PHP , что именно ее нужно использовать для вызова встроенных функций usort () , uasort () или uksort () .

Определяемая функция должна принимать два параметра и возвращать значение, указывающее, какой именно параметр идет первым по списку. Отрицательное или false значение говорит о том, что первый параметр указывается до второго. Положительное или true — что вначале идет второй параметр. Нулевое значение (0 ) указывает, что оба параметра равнозначны.

A – Сортировка по оценке (параметр grade) (числовая сортировка)

Определим функцию для сортировки массива по оценке (параметр grade ):

// Функция сортировки по оценке: сортировка по УБЫВАНИЮ. function grade_sort($x, $y) < if ($x[" оценка "] $y["оценка"]) < return false; >else < return 0; >>

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

// $students – наш многомерный массив, а grade_sort – созданная функция usort ($students, » grade_sort «);

// Вызвать на печать массив в виде (начальный массив): echo «

Массив в виде

Массив отсортирован по оценке

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

Выводя на экран значения $x[‘оценка’] и $y [‘оценка’] , можно увидеть, как вызывается функция сортировки, определенная пользователем.

Можно сократить функцию grade_sort следующим образом:

Примечание : Функция usort () сортирует по значениям, но не сохраняет ключи ( для внешнего массива ). Если ключи нужны, то лучше использовать функцию uasort () .

B – Сортировка по имени (в алфавитном порядке)

Чтобы отсортировать массив $students по первому ключу, необходимо сравнить две строки. Поэтому в примере с сортировкой в алфавитном порядке воспользуемся функция strcasecmp() ( не чувствительна к регистру ) и strcmp() ( чувствительна к регистру ). Получившийся двумерный массив PHP будет иметь следующий вид:

// Функция сортировки по имени: function name_sort($x, $y)

// Вывести на печать массив в виде (начальный массив): echo «

Массив в виде

Массив отсортирован по имени

На скриншоте, приведенном ниже, показан результат сортировки по имени:

Перевод статьи « Sorting multi-dimensional array in PHP » был подготовлен дружной командой проекта .

Сортировка является одной из наиболее важных процедур при работе с массивами. Чтобы осознать ее важность достаточно вспомнить о таких действиях, как, например, сортировка фильмов в алфавитном порядке или сортировка каких-либо цен по возрастанию или убыванию и т.д. Согласитесь, очень распространенные действия для различных приложений! Сегодня мы поговорим, как производить сортировку элементов массива по заданным условиям.

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

Задачи могут быть различными, но инструменты, которые мы при этом будем использовать останутся стандартными. Эти инструменты – специальные функции, которые и применяются для сортировки элементов массива.

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

Давайте на примерах разберем эти функции и посмотрим, как они работают.

Сортируем массивы-списки в алфавитном и обратном порядке

Для начала давайте познакомимся с достаточно простой и понятной функцией sort() .

Она позволит нам отсортировать элементы массива по возрастанию или, если эти элементы строковые – в алфавитном порядке.

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

$Mass = array(«Катя», «Аня», «Лена»,»Андрей»); sort($Mass); print_r($Mass); ?>

А результат будет следующим. Как Вы можете видеть на скриншоте справа, элементы отсортированы в алфавитном порядке. Если вместо строковых элементов у нас будут числа, то эта функция также отсортирует числа по возрастанию. Можете проверить это самостоятельно.

Также существует и функция, которая делает обратное действие, то есть сортирует элементы массива по убыванию или в порядке обратном алфавитному.

Эта функция называется rsort() . Работает она следующим образом:

$Mass = array(«Катя», «Аня», «Лена»,»Андрей»); rsort($Mass); print_r($Mass); ?>

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

Думаю, что с этими функциями все предельно ясно. Протестируйте их со своими массивами и у Вас не останется никаких вопросов.

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

Все замечательно, однако, с ассоциативными массивами мы уже не сможем применить данные функции, так как они разрывают связь значения с ключом массива. Поэтому нам нужно познакомиться еще с некоторыми функциями, которые позволят нам сортировать ассоциативные массивы.

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

Давайте начнем с сортировки по значениям.

Для того, чтобы отсортировать значения ассоциативного массива в алфавитном порядке, мы применим функцию asort() .

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

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; asort($Mass); print_r($Mass); ?>

Как Вы видите, значения ассоциативного массива отсортированы в алфавитном порядке, однако, их связь с ключами сохранена.

Таким же образом работает, и функция arsort() , за тем исключением, что она сортирует значения ассоциативного массива в обратном порядке.

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; arsort($Mass); print_r($Mass); ?>

Здесь опять же мы можем видеть, что значения элементов массива сохраняют свою связь с ключами, но отсортированы в обратном порядке.

Тот же самый ассоциативный массив мы можем отсортировать и по ключам.

Как Вы, наверное, уже догадались это можно сделать в алфавитном или обратном порядке.

Для того, чтобы сортировать массив по ключам в алфавитном порядке, нам понадобится функция ksort() .

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; ksort($Mass); print_r($Mass); ?>

Массив отсортирован по ключам в алфавитном порядке.

Для того, чтобы отсортировать массив по его ключам в обратном порядке, применяется функция krsort() .

$Mass[«один»]=»Катя»; $Mass[«два»]=»Борис»; $Mass[«три»]=»Аня»; $Mass[«четыре»]=»Рита»; krsort($Mass); print_r($Mass); ?>

Думаю, что из скриншота все понятно.

Пользовательская сортировка

Также мы можем задать и свои порядок сортировки, то есть создать пользовательскую сортировку.

Для этого также в php предусмотрены специальные функции.

Для пользовательской сортировки списков предусмотрена функция usort() .

Она будет принимать два аргумента. Первый аргумент – это наш массив; второй аргумент – будет содержать имя функции, сравнивающей два элемента.

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

1 – если первый элемент сравнения больше второго;

-1 – если второй больше первого;

0 – если элементы равны.

Таким образом мы, например, можем отсортировать элементы массива по возрастанию их длины.

Для этого сначала объявим сам массив, который будет содержать строковые элементы различной длины.

После этого воспользуемся функцией для пользовательской сортировки usort() . Ей передадим в качестве аргументов: имя нашего массива и имя функции, которую мы создали для сравнения элементов.

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

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

Также мы можем сделать пользовательскую сортировку ассоциативного массива по его ключам. Для этого нам понадобится функция uksort() и сам ассоциативный массив.

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

Ключи элементов массива отсортированы по возрастанию их длины.

И также мы можем создать пользовательскую сортировку ассоциативного массива по значениям его элементов. В этом нам поможет функция uasort() .

Принцип все тот же.

Теперь массив отсортирован по увеличению длин его значений.

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

Чтобы хорошенько понять, как работает пользовательская сортировка, нужно попрактиковаться и попробовать написать какую-то свою функцию сравнения.

Однако, теперь, я думаю, у Вас есть полное представление о том, как можно сортировать элементы массива и каким образом эти отсортированные элементы использовать.

Практикуйтесь, пишите Ваши комментарии и делитесь статьей с друзьями при помощи кнопок социальных сетей.

Если Вы еще не подписаны на обновления блога, то подписывайтесь. Форма подписки находится ниже.

С Вами была Анна Котельникова. До встречи в следующих статьях.

Массивы очень удобны для обработки большого количества информации. Существует большое количество функций для удобной работы с ними. В частности, сегодня речь пойдёт о сортировке. Ничего нового открывать я не буду, просто познакомлю с самыми нужными для ежедневного кодинга.

Сортирование индексированных массивов: sort() and rsort()

Функция sort() сортирует значения в индексированном массиве в возрастающем порядке. Это означает, что A идёт перед Z, 0 -перед 9. Заглавные буквы перед строчными, буквы перед цифрами. Например:

$myArray = array(1, 2, «a», «b», «A», «B»); sort($myArray); // Отображает «A B a b 1 2» foreach ($myArray as $val) echo «$val «;

rsort() — это sort() наоборот:

$myArray = array(1, 2, «a», «b», «A», «B»); rsort($myArray); // Отображает «2 1 b a B A» foreach ($myArray as $val) echo «$val «;

Все sorting-функции возвращают true при успехе, и false при обломе)

Сортировка ассоциативных массивов: asort() and arsort()

sort() и rsort() очень хороши для индексированных массивов, где не нужно волноваться о связи ключа и значения. Могут получится неожиданности) Например:

$movie = array(«title» => «Rear Window», «director» => «Alfred Hitchcock», «year» => 1954, «minutes» => 112); sort($movie); // Отобразит «Array ( => Alfred Hitchcock => Rear Window => 112 => 1954)» print_r($movie);

Видно, что произошла путаница, и оригинальная структура «title», «director», «year» and «minutes» поменялась.

Если же вы хотите сортировать ассоциативный массив по первичному ключу, используйте функции asort() и arsort() Эти функции учитывают связь ключей и их значений

За возрастающий порядок сортировки отвечает функция asort():

$movie = array(«title» => «Rear Window», «director» => «Alfred Hitchcock», «year» => 1954, «minutes» => 112); asort($movie); // Отображает «Array ( => Alfred Hitchcock => Rear Window => 112 => 1954)» print_r($movie);

$movie = array(«title» => «Rear Window», «director» => «Alfred Hitchcock», «year» => 1954, «minutes» => 112); arsort($movie); // Отображает «Array ( => 1954 => 112 => Rear Window => Alfred Hitchcock)» print_r($movie);

Сортировка ассоциативных массивов по ключу: ksort() и krsort()

ksort() сортирует по возрастанию значения ключа, krsort() — по убыванию. Как и asort() с arsort(), эта функция сохраняет связь между ключом значением. Пример:

$movie = array(«title» => «Rear Window», «director» => «Alfred Hitchcock», «year» => 1954, «minutes» => 112); // Отображает «Array ( => Alfred Hitchcock => 112 => Rear Window => 1954)» ksort($movie); print_r($movie); // Отображает «Array ( => 1954 => Rear Window => 112 => Alfred Hitchcock)» krsort($movie); print_r($movie);

Сортировка сложных и многомерных массивов с array_multisort()

Очень мощная функция array_multisort() может сортировать многомерный массив, сохраняя связь между массивами.
Вобщем, сейчас всё увидим:

Сортировка сложных массивов

Сортируем, используя array_multisort(), просто указываем те массивы, которые нужно обратотать:

$directors = array(«Stanley Kubrick», «Alfred Hitchcock», «Martin Scorsese»); $titles = array(«Full Metal Jacket», «Rear Window», «Mean Streets»); $years = array(1987, 1954, 1973); array_multisort($directors, $titles, $years); print_r($directors); echo «
«; print_r($titles); echo «
«; print_r($years); echo «
«;

Этот код отобразит:

Array ( => Alfred Hitchcock => Martin Scorsese => Stanley Kubrick)
Array ( => Rear Window => Mean Streets => Full Metal Jacket)
Array ( => 1954 => 1973 => 1987)

Сначала array_multisort() сортирует значения в $directors в возрастающем порядке, затем 2 остальных так же.

А что если мы хотим сортировать, например, чтобы вначале «title»? Просто положите $titles вперёд списка:

Array_multisort($titles, $directors, $years);

Если первый массив содержит какое-то количество id-номеров, тогда array_multisort() сортирует
по этим значениям первый массив, затем — второй, и тд. Пример:

$directors = array(«Stanley Kubrick», «Alfred Hitchcock», «Martin Scorsese», «Stanley Kubrick»); $titles = array(«Full Metal Jacket», «Rear Window», «Mean Streets», «A Clockwork Orange»); $years = array(1987, 1954, 1973, 1971); array_multisort($directors, $titles, $years); print_r($directors); echo «
«; print_r($titles); echo «
«; print_r($years); echo «
«;

Этот код выдаёт следующее — заметьте, что «A Clockwork Orange» перед «Full Metal Jacket»:

Array ( => Alfred Hitchcock => Martin Scorsese => Stanley Kubrick => Stanley Kubrick)
Array ( => Rear Window => Mean Streets => A Clockwork Orange => Full Metal Jacket)
Array ( => 1954 => 1973 => 1971 => 1987)

Меняем порядок сортировки

Вы можете пропустить (опционально) flag-аргумент после аргумента массива чтобы менять порядок сортировки:

SORT_ASC
сортировка по возрастанию
SORT_DESC
сортировка по убыванию

Тут сортируем $directors по возрастанию, затем $titles по убыванию:

$directors = array(«Stanley Kubrick», «Alfred Hitchcock», «Martin Scorsese», «Stanley Kubrick»); $titles = array(«Full Metal Jacket», «Rear Window», «Mean Streets», «A Clockwork Orange»); $years = array(1987, 1954, 1973, 1971); array_multisort($directors, SORT_ASC, $titles, SORT_DESC, $years); print_r($directors); echo «
«; print_r($titles); echo «
«; print_r($years); echo «
«;

Вот что вышло: заметьте, что «Full Metal Jacket» теперь перед «A Clockwork Orange»:


Array ( => Alfred Hitchcock => Martin Scorsese => Stanley Kubrick => Stanley Kubrick)
Array ( => Rear Window => Mean Streets => Full Metal Jacket => A Clockwork Orange)
Array ( => 1954 => 1973 => 1987 => 1971)

Сортировка многомерных массивов

Сортировка через array_multisort() проходит по первому элементу каждого массива. Если 2 значения одинаковы, сортирвка идёт по 2у элементу и тп.

Это пример, который показывает, как это работает
Сортировка идет по director, потом по title, потом по year:

$movies = array(array(«director» => «Alfred Hitchcock», «title» => «Rear Window», «year» => 1954), array(«director» => «Stanley Kubrick», «title» => «Full Metal Jacket», «year» => 1987), array(«director» => «Martin Scorsese», «title» => «Mean Streets», «year» => 1973), array(«director» => «Stanley Kubrick», «title» => «A Clockwork Orange», «year» => 1971)); array_multisort($movies); echo «»;


Array
=> Array
=> Alfred Hitchcock
=> Rear Window
=> 1954
)

=> Array
=> Martin Scorsese
=> Mean Streets
=> 1973
)

=> Array
=> Stanley Kubrick
=> A Clockwork Orange
=> 1971
)

=> Array
=> Stanley Kubrick
=> Full Metal Jacket
=> 1987
)

Как видите, array_multisort() отсортирвал массив по director. Когда имя режиссёра повторилось, («Stanley Kubrick»), сортировка пошла по title.

Чтобы отсортровать в обратном порядке, укажите SORT_DESC-флаг как второй аргумент array_multisort(). Просто!

В этом уроке мы посмотрели на простые PHP-функции для сортровки массива:

* sort() и rsort() для сортровки индексируемых массивов
* asort() и arsort() для сортровки асоциативных массивов
* ksort() и krsort() для сортровки ассоциативнх массивов по ключу
* array_multisort() для сортировки для сортировки сложных и многомерных массивов

PHP-сортировка массивов очень мощна и проста, можно сортировать быстро и как угодно). ТОлько тут мы изучили аж 13 функций! Чтобы увидеть больше, смотрите

Наткнулся тут на интересный блог – блог про блоги так сказать) Автор обзоры делает)

Подпишись на каталога блога

Очевидно, что может возникнуть необходимость в сортировке массива по значениям ключей . Например, если у нас естьмассив данных о книгах, как в приведенном выше примере, то вполне вероятно, что мы захотимотсортировать книги по именам авторов. Для этого в PHP также не нужно писать много строк кода – можно просто воспользоваться функциейksort() длясортировки по возрастанию (прямой порядоксортировки ) илиkrsort() – длясортировки по убыванию (обратный порядоксортировки ). Синтаксис этих функций опять же аналогичен синтаксису функцииsort() .

$books = array(«Пушкин»=>»Руслан и Людмила»,

«Толстой»=>»Война и мир»,

«Лермонтов»=>»Герой нашего времени»);

// сохраняя значения ключей

Array ([Лермонтов] => Герой нашего времени

[Пушкин] => Руслан и Людмила

[Толстой] => Война и мир)

Сортировка с помощью функции, заданной пользователем

Кроме двух простых способов сортировки значений массива (по убыванию или по возрастанию) PHP предлагает пользователю возможность самому задавать критерии длясортировки данных. Критерий задается с помощью функции, имя которой указывается в качестве аргумента для специальных функцийсортировки usort() илиuksort() . По названиям этих функций можно догадаться, чтоusort() сортирует значения элементовмассива , аuksort()значения ключей массива с помощью определенной пользователем функции. Обе функции возвращаютtrue, еслисортировка прошла успешно, иfalse– в противном случае. Их синтаксис выглядит следующим образом:

usort (массив, сортирующая функция)

uksort (массив, сортирующая функция)

Конечно же, нельзя сортировать массив с помощью любой пользовательской функции. Эта функция должна удовлетворять определенным критериям, позволяющим сравнивать элементымассива . Как должна быть устроена сортирующая функция? Во-первых, она должна иметь два аргумента. В них интерпретатор будет передавать парызначений элементов для функцииusort() илиключей массива для функцииuksort() . Во-вторых, сортирующая функция должна возвращать:

целое число, меньшее нуля, если первый аргумент меньше второго;

число, равное нулю, если два аргумента равны;

число большее нуля, если первый аргумент больше второго.

Как и для других функций сортировки , для функцииusort() существует аналог, не изменяющийзначения ключей , – функцияuasort() .

Пример 7.10. Допустим, у нас естьмассив , содержащий такие сведения о литературных произведениях, как название, автор и год создания. Мы хотим упорядочить книги по дате создания.

// массив выглядит таким образом:

$books = array(«Герой нашего времени» =>

array («Лермонтов», 1840),

«Руслан и Людмила» => array(«Пушкин»,1820),

«Война и мир» => array («Толстой»,1863),

/* можно, конечно переписать этот массив

по-другому, сделав год издания, например,

индексом, но гораздо удобнее написать свою

функцию для сортировки */

// сортируем массив с помощью функции cmp

foreach ($books as $key => $book) <

// функция, определяющая способ сортировки

if ($a «Руслан и Людмила»,

«Л.Н. Толстой»=>»Война и мир»,

«М.Ю. Лермонтов»=>»Герой нашего времени»);

echo «$data \»$val\» написал $key
«;

// $book1 функцию try_walk

Пример 7.11. Применение функции ко всем элементам массива (html , txt )

Роман «Руслан и Людмила» написал А.С. Пушкин

Роман «Война и мир» написал Л.Н. Толстой

Роман «Герой нашего времени»

написал М.Ю. Лермонтов

Заметим, что мы не изменили значений у элементов массива . Чтобы их изменить, надо было передавать значения в переменную $var функции try_walk по ссылке.

«А.С. Пушкин»=>»Руслан и Людмила»,

«Л.Н. Толстой»=>»Война и мир»,

«М.Ю. Лермонтов»=>»Герой нашего времени»);

// создаем функцию, которую хотим

// применить к элементам массива

$val = «Название: \»» . $val .»\»

// применяем ко всем элементам массива

// $book1 функцию try_walk

Пример 7.12. Применение функции ко всем элементам массива. Вариант 2 (html , txt )

В результате работы скрипта получим:

Название: «Руслан и Людмила»

Название: «Война и мир»

Название: «Герой нашего времени»

Array ([А.С. Пушкин] =>

Название: «Руслан и Людмила»

Название: «Война и мир»

Название: «Герой нашего времени»)

Поскольку массив – это набор элементов, вполне вероятно, потребуется выделить из него какой-нибудь поднабор. В PHP для этих целей есть функцияarray_slice . Ее синтаксис таков:

Эта функция выделяет подмассив длиныдлинавмассиве массив, начиная с элемента, номер которого задан параметромномер_элемента. Положительныйномер_элементауказывает на порядковый номер элемента относительно началамассива , отрицательный – на номер элемента с концамассива .

выведет Array ( => 3 =>4 => 5),

т.е. подмассив, состоящий из элементов

// выведет Array ( => 4 => 5),

// т.е. подмассив, из элементов 4, 5

Если задать параметр длинапри использованииarray_slice , то будетвыделен подмассив , имеющий ровно столько элементов, сколько задано этим параметром. Длину можно указывать и отрицательную. В этом случае интерпретатор удалит с концамассива число элементов, равное модулю параметрадлина.

$sub_arr = array_slice($arr, 2, 2);

// содержит массив из элементов 3, 4

$sub = array_slice($arr,-3, 2);

// тоже содержит массив из элементов 3, 4

$sub1 = array_slice($arr,0, -1);

// содержит массив из

// элементов 1, 2, 3, 4

$sub2 = array_slice($arr,-4, -2);

// содержит массив из элементов 2, 3

Пример 7.14. Использование функции array_slice(). Вариант 2 (html , txt )

Есть еще одна функция, похожая на array_slice() – этоarray_chunk() . Она разбиваетмассив на несколько подмассивов заданной длины. Синтаксис ее такой:

array_chunk (массив, размер

В результате работы array_chunk() возвращает многомерныймассив , элементы которого представляют собой полученные подмассивы. Если задать параметр сохранятьключи какtrue, то при разбиении будут сохраненыключи исходногомассива . В противном случаеключи элементов заменяются числовыми индексами, которые начинаются с нуля.

Пример 7.15. У нас есть список приглашенных, оформленный в видемассива их фамилий. У нас имеются столики на три персоны. Поэтому нужно распределить всех приглашенных по трое.

$persons = array(«Иванов», «Петров»,

// делим массив на подмассивы

// по три элемента

foreach ($triples as $k => $table)<

// выводим полученные тройки

echo «За столиком номер $k сидят:

    «;

foreach ($table as $pers)

В результате получим:

за столиком номер 0 сидят:

за столиком номер 1 сидят:

Сумма элементов массива

В этом разделе мы познакомимся с функцией, вычисляющей сумму всех элементов массива . Сама задача вычислениясуммы значений массива предельно проста. Но зачем писать лишний раз один и тот же код, если можно воспользоваться специально созданной и всегда доступной функцией. Функция эта называется, как можно догадаться,array_sum() . И в качестве параметра ей передается только имямассива ,сумму значений элементов которого нужно вычислить.

В качестве примера использования этой функции приведем решение более сложной задачи, чем просто вычисление суммы элементов . Этот пример также иллюстрирует применение функцииarray_slice() , которую мы обсуждали чуть раньше.

Пример 7.16. Пусть данмассив натуральных чисел. Нужно найти в нем такое число, чтосумма элементов справа от него равнасумме элементов слева от него.

//массив задается функцией array

// перебираем каждый элемент массива $arr.

// Внутри цикла текущий ключ массива

// содержится в переменной $k,

// текущее значение – в переменной $v

foreach ($arr as $k => $val)<

// синтаксис array array_slice (

array array,int offset [,int length])

// array_slice выделяет подмассив

// длины length в массиве array,

// начиная с элемента offset.

// идущих после текущего

// получаем массив элементов,

// идущих перед текущим

// функция mixed array_sum (array array)

// подсчитывает сумму элементов массива array

// если сумма элементов до текущего равна

// сумме элементов после, то выводим

// значение текущего элемента

// можно посмотреть, что представляют собой

// рассмотренные массивы на каждом шаге

// echo «$next_sum, $prev_sum
«;

Пример 7.16. Программа поиска числа, такого что сумма элементов справа от него равна сумме элементов слева от него (html , txt )

Итак, подведем итоги. В этой лекции мы изучили ряд функций, упрощающих работу с массивами данных. Мы рассмотрели функции дляпоиска значения среди элементов массива ; функции длясортировки элементов массива , как по ихзначениям , так и поключам ; функции, позволяющиеприменять ко всем элементам массива функцию, созданную пользователем . Кроме того, мы изучили функцию,выделяющую подмассивы из элементовмассива , и функцию, вычисляющуюсумму всех элементов массива . Использование всех этих функций было продемонстрировано на примерах. Все функции для работы смассивами доступны без каких-либо конфигурационных настроек PHP, и пользоваться ими можно абсолютно свободно. Так что, прежде чем изобретать велосипед, загляните в руководство по языку PHP: – вполне возможно, что кто-то сделал это до вас.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL