Php сортировка строк алфавиту

Содержание
  1. Сортировка массивов
  2. Сортировка массива по ключу
  3. Результат:
  4. Сортировка массива по значению
  5. Результат:
  6. Результат:
  7. Естественная сортировка
  8. Результат:
  9. Результат:
  10. Сортировка многомерных массивов
  11. Результат:
  12. Сортировка многомерного массива по значению одного ключа
  13. Результат:
  14. Перемешать массив
  15. Результат:
  16. Php сортировка строк алфавиту
  17. Результат сортировки массива по алфавиту в латинице, в php
  18. Сортировать массив в php — латиница, в обратную сторону.
  19. Результат сортировки массива по алфавиту в обратную сторону, в php
  20. Сортировать смешанный массив в php — латинице.
  21. Результат сортировки массива с прописными и строчными буквами латинице:
  22. Сортируем массив в php — кириллица.
  23. Результат сортировки массива в кириллице:
  24. Сортируем массив в php — кириллица, в обратную сторону.
  25. Результат сортировки массива в кириллице, в обратную сторону:
  26. Сортировать смешанный массив в php — кириллице.
  27. Погнали!
  28. Результат сортировки смешанного массива в кириллице:
  29. Php сортировка строк алфавиту
  30. Функция is_array
  31. Функции count/sizeof
  32. Функции shuffle
  33. Функции compact
  34. Сортировка массивов
  35. Сортировка по ключам
  36. Естественная сортировка

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

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

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

ksort() и krsort() – сортирует массив по ключу.

$array = array( 3 => 'яблоко', 1 => 'апельсин', 5 => 'виноград' ); // По возрастанию: ksort($array); print_r($array); // По убыванию: krsort($array); print_r($array);

Результат:

Array ( [1] => апельсин [3] => яблоко [5] => виноград ) Array ( [5] => виноград [3] => яблоко [1] => апельсин )

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

Функции sort() и rsort() сортирует массив по значению, при этом не сохраняя ключи.

$array = array( 3 => 'яблоко', 1 => 'апельсин', 5 => 'виноград' ); // По возрастанию: sort($array); print_r($array); // По убыванию: rsort($array); print_r($array);

Результат:

Array ( [0] => апельсин [1] => виноград [2] => яблоко ) Array ( [0] => яблоко [1] => виноград [2] => апельсин )

Чтобы сохранить ключи применяется функции asort() и arsort() .

$array = array( 3 => 'яблоко', 1 => 'апельсин', 5 => 'виноград' ); // По возрастанию: asort($array); print_r($array); // По убыванию: arsort($array); print_r($array);

Результат:

Array ( [1] => апельсин [5] => виноград [3] => яблоко ) Array ( [3] => яблоко [5] => виноград [1] => апельсин )

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

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

Читайте также:  Java это лицензионное по
SORT_REGULAR Обычное сравнение элементов (без изменения типов)
SORT_NUMERIC Числовое сравнение элементов
SORT_STRING Строковое сравнение элементов
SORT_LOCALE_STRING Сравнивает элементы как строки с учетом текущей локали.
SORT_NATURAL Также как natsort()
SORT_FLAG_CASE Может быть объединен с SORT_STRING или SORT_NATURAL для сортировки строк без учета регистра.

Привычную для человека сортировку делают функции natsort() , natcasesort() или флаг SORT_NATURAL .
natcasesort() сортирует массив без учета регистра символов.

Разницу можно увидеть в примере:

$array = array(-1, 0, 10, 'текст', 'a', 'b'); // Quicksort: sort($array); print_r($array); // Natural order: natsort($array); print_r($array);

Результат:

Array ( [0] => -1 [1] => a [2] => b [3] => 0 [4] => текст [5] => 10 ) Array ( [0] => -1 [1] => 0 [2] => 10 [4] => a [5] => b [3] => текст )

У natsort() нет возможности изменить направление сортировки, поэтому можно применить функцию array_reverse() .

natsort($array); $array = array_reverse($array); print_r($array);

Результат:

Array ( [0] => текст [1] => b [2] => a [3] => 10 [4] => 0 [5] => -1 )

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

array_multisort() сортирует многомерные массивы по значению, также может отсортировать сразу несколько массивов.

$array = array( array(20, 222, 2, 22), array(10, 111, 1, 11), ); array_multisort($array); print_r($array);

Результат:

Array ( [0] => Array( [0] => 10 [1] => 111 [2] => 1 [3] => 11 ) [1] => Array( [0] => 20 [1] => 222 [2] => 2 [3] => 22 ) )

Чтобы изменить направление сортировки вторым аргументом функции указывается SORT_ASC или SORT_DESC .

array_multisort($array, SORT_DESC); print_r($array);

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

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

В примере сортировка идет по ключу « count ».

$array = array( array( 'sku' => '645908-463', 'count' => '1' ), array( 'sku' => '64590644', 'count' => '20' ), array( 'sku' => '7543', 'count' => '2' ) ); // По возрастанию: function cmp_function($a, $b) < return ($a['count'] >$b['count']); > uasort($array, 'cmp_function'); print_r($array); // По убыванию: function cmp_function_desc($a, $b) < return ($a['count'] < $b['count']); >uasort($array, 'cmp_function_desc'); print_r($array);

Результат:

Array ( [0] => Array( [sku] => 645908-463 [count] => 1 ) [2] => Array( [sku] => 7543 [count] => 2 ) [1] => Array( [sku] => 64590644 [count] => 20 ) ) Array ( [1] => Array( [sku] => 64590644 [count] => 20 ) [2] => Array( [sku] => 7543 [count] => 2 ) [0] => Array( [sku] => 645908-463 [count] => 1 ) )

Второй вариант на основе функции array_multisort() :

function array_multisort_value() < $args = func_get_args(); $data = array_shift($args); foreach ($args as $n =>$field) < if (is_string($field)) < $tmp = array(); foreach ($data as $key =>$row) < $tmp[$key] = $row[$field]; >$args[$n] = $tmp; > > $args[] = &$data; call_user_func_array('array_multisort', $args); return array_pop($args); > $array = array( array( 'sku' => '645908-463', 'count' => '1' ), array( 'sku' => '64590644', 'count' => '20' ), array( 'sku' => '7543', 'count' => '2' ) ); $array = array_multisort_value($array, 'count', SORT_DESC); print_r($array);

Перемешать массив

Функция shuffle() перемешивает массив в случайном порядке, не сохроняя ключи.

$array = array( 1 => 'яблоко', 2 => 'апельсин', 3 => 'виноград' ); shuffle($array); print_r($array); shuffle($array); print_r($array);

Результат:

Array ( [0] => виноград [1] => яблоко [2] => апельсин ) Array ( [0] => виноград [1] => апельсин [2] => яблоко ) 

Источник

Php сортировка строк алфавиту

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

Мы используем «ВСЕГДА» на сайте только живые коды и примеры, поэтому, мы сможем вывести прямо здесь наш массив, который будем сортировать по алфавиту в латинице, с помощью print_r:

Array 

(

[0] => Tom [1] => Bob [2] => Sam [3] => Alice

)

Как видим. наш массив в латинице не отсортирован по алфавиту.

Теперь применим к данному массиву функцию «sort«

Результат сортировки массива по алфавиту в латинице, в php

Как видим массив — замечательно отсортировался по алфавиту!

Array 

(

[0] => Alice [1] => Bob [2] => Sam [3] => Tom

)

Сортировать массив в php — латиница, в обратную сторону.

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

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

И применим родственную функцию предыдущей функции — rsort

И выведем опять, прямо здесь, отсортированный массив в обратную сторону в латинице:

Результат сортировки массива по алфавиту в обратную сторону, в php

Наш массив прекрасно отсортировался в алфавитном порядке, в обратную сторону.

Array 

(

[0] => Tom [1] => Sam [2] => Bob [3] => Alice

)

Сортировать смешанный массив в php — латинице.

Что означает в данном контексте слово смешанный массив?

Смешанный массив — создадим массив, где будут и строчные и прописные буквы в латинице!

Почему бы не попробовать отсортировать такой массив в алфавитном порядке?

Для такой сортировки массива по алфавиту, нам понадобится массив, в котором будут и прописные и строчные буквы.

$array_for_sort= [«Tom», «Bob», «sam», «alice»];

Вы можете потренироваться любыми функция отсортировать такой или подобный массив, я этим не буду заниматься! Мы сразу перейдем к сортировке выше приведенного массива. Нам понадобится опять функция «sort», но с дополнительными флагами — «SORT_NATURAL | SORT_FLAG_CASE»

И выведем данную строку здесь:

Результат сортировки массива с прописными и строчными буквами латинице:

Мы видим результат сортировки массива в php? в латинице с строчными и прописными буквами!

Array 

(

[0] => alice [1] => Bob [2] => sam [3] => Tom

)

Сортируем массив в php — кириллица.

Следующим пунктом отсортируем массив в php в кириллице!

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

Создадим простой(одномерный) массив:

Применим к данному массиву функцию «sort»:

Уже несколько надоевшая функция print_r, с помощью которой выведем отсортированный массив:

Результат сортировки массива в кириллице:

Как видим. наш массив в кириллице, в php, замечательно отсортировался по алфавиту!

Array 

(

[0] => анкор [1] => банка [2] => вид [3] => голос [4] => фифа [5] => якорь

)

Сортируем массив в php — кириллица, в обратную сторону.

Далее. отсортируем массив в кириллице в обратную сторону:

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

Возьмем тот же массив, что был выше пунктом:

Применим к массиву функцию «rsort»:

Опять используем print_r, с помощью которой выведем отсортированный массив:

Результат сортировки массива в кириллице, в обратную сторону:

Как видим. наш массив в кириллице, в php, замечательно отсортировался по алфавиту, в обратную сторону!

Array 

(

[0] => якорь [1] => фифа [2] => голос [3] => вид [4] => банка [5] => анкор

)

Сортировать смешанный массив в php — кириллице.

Теперь. относительно смешанного массива в php в кириллице, где встречаются и прописные и строчные буквы!

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

Поэтому, приведу пример, как я бы решил эту задачку!

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

Погнали!

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

После этого. рекурсивно проходим по значениям массива и применим собственную функцию strtolower

Далее. применим уже не раз использованную функцию «sort»:

Результат сортировки смешанного массива в кириллице:

Как видим. наш массив в кириллице, в php, замечательно отсортировался по алфавиту!

Array 

(

[0] => анкор [1] => банка [2] => вид [3] => голос [4] => фифа [5] => якорь

)

Источник

Php сортировка строк алфавиту

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

Функция is_array

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

$users = ["Tom", "Bob", "Sam"]; $isArray = is_array($users); echo ($isArray==true)?"это массив":"это не массив";

Функции count/sizeof

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

$users = ["Tom", "Bob", "Sam"]; $number = count($users); // то же самое, что // $number = sizeof($users); echo "В массиве users $number элемента/ов";

Функции shuffle

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

$users = ["Tom", "Bob", "Sam", "Alice"]; shuffle($users); print_r($users); // один из возможных вариантов //Array ( [0] => Bob [1] => Tom [2] => Alice [3] => Sam )

Функции compact

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

 Apple II [producer] => Apple [year] => 1978 ) ?>

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

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

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

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

$users = ["Tom", "Bob", "Sam", "Alice"]; asort($users); print_r($users); // вывод отсортированного массива // Array ( [3] => Alice [1] => Bob [2] => Sam [0] => Tom )

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

  • SORT_REGULAR : автоматический выбор сортировки
  • SORT_NUMERIC : числовая сортировка
  • SORT_STRING : сортировка по алфавиту

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

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

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

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

$states = ["Spain" => "Madrid", "France" => "Paris", "Germany" => "Berlin", ]; asort($states); print_r($states); // массив после asort - сортировка по значениям элементов // Array ( [Germany] => Berlin [Spain] => Madrid [France] => Paris ) ksort($states); print_r($states); // массив после ksort - сортировка по ключам элементов // Array ( [France] => Paris [Germany] => Berlin [Spain] => Madrid )

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

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

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

 Windows 10 [0] => Windows 7 [1] => Windows 8 ) ?>

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

 Windows 7 [1] => Windows 8 [2] => Windows 10) ?>

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

Источник

Оцените статью