Массив в алфавитном порядке PHP
Способ достаточно прост и заключается в двух шагах: установке локали (setlocal) и непосредственно сортировки массива. Рассмотрим пример с комментариями.
Код PHP
<?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?
<?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.
Спасибо за внимание! Надеюсь информация была полезна. Если есть вопросы, то пишите в комментариях.