Как отсортировать массив в алфавитном порядке
Массив в алфавитном порядке PHP
Способ достаточно прост и заключается в двух шагах: установке локали (setlocal) и непосредственно сортировки массива. Рассмотрим пример с комментариями.
Код PHP
setlocale(LC_ALL, "Russian_Russia.1251"); // установили локаль для русских букв // пример массива, где слова расположены НЕ по порядку $example=array("банка","Борис","вид","анкета","егерь","Фёдор","жена","голос"); natcasesort($example, SORT_LOCALE_STRING); // сортируем массив БЕЗ учёта регистра // ДЛЯ УЧЁТА РЕГИСТРА используйте sort вместо natcasesort // выводим результат foreach ($example as $key => $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 выглядит так:
Ukrainian_Ukraine.1251 (cp1251) - локаль для Украины.
Как установить локаль для других кодировок в PHP?
// Устновка локалей для Windows // Кодировка Windows-1251 setlocale(LC_ALL, 'Russian_Russia.1251'); // Кодировка KOI8-R setlocale(LC_ALL, 'Russian_Russia.20866'); // Кодировка UTF-8 (использовать осторожно) setlocale(LC_ALL, 'Russian_Russia.65001');
Второй способ выстроить массив в алфавитном порядке PHP
Если данный способ не устроит и Вы хотите пойти сложным путём, то создайте массив следующего вида:
Код PHP
[0] => а [1] => б [2] => в [3] => г [4] => д [5] => е [6] => ё [7] => ж [8] => з [9] => и [10] => й [11] => к [12] => л [13] => м [14] => н [15] => о [16] => п [17] => р [18] => с [19] => т [20] => у [21] => ф [22] => х [23] => ц [24] => ч [25] => ш [26] => щ [27] => ъ [28] => ы [29] => ь [30] => э [31] => ю [32] => я
И переберите по первой букве второй массив.
Первую букву какого-либо элемента массива вычисляем так:
Код PHP
$city[1]='Москва'; // например элемент с индексом 1 $first_letter = mb_substr($city[1],0,1,'UTF-8'); // получим букву "М"
Поскольку работаем с русскими буквами (многобайтной кодировкой), то использовать лучше функцию mb_substr, а в конце лучше точно указать кодировку данных переменной или массива, в нашем случае UTF-8.
Спасибо за внимание! Надеюсь информация была полезна. Если есть вопросы, то пишите в комментариях.
Комментарии