Нанопатч для создания алфавитного указателя из массива

Опубликовано Опубликовано в рубрике Easy Patch, PHP

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

А
Андорра Аргентина
Б
Барбадос Белоруссия

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

Теперь код.

Открыли таблицу и задали первую проверочную букву - русскую "А". Начинаем работать с массивом.

foreach ($array as $row)
{
$print = $row['name'];//считываем текущую ячейку с именем страны
$tmp_ltr = $print[0];//текущая буква

Теперь у нас есть все нужные данные, и мы можем описать логику работы вывода.

if ($tmp_ltr == $sravn)
	{
		if ($trig == 1){
	?>
'> '>
>
'> '>

Комментарии.
1 случай. Если на входе текущая и проверочная буквы идентичны, то мы объявляем триггер $trig, который отвечает за вывод таблицы в две колонки (на входе $trig=1; если 1, то это первая ячейка - выводим начало строки и ячейку; после вывода первой ячейки прибавляем единицу; если 2, то это вторая ячейка - выводим ячейку и конец строки; после вывода возвращаем $trig = 1). Возвращаемся на вход.
2 случай. Если на входе текущая и проверочная буквы не равны, то выводим строчку-заголовок на всю ширину таблицы с новой буквой. Затем букве сравнения присваиваем текущую букву и выводим таблицу точно также, как и в 1 случае.

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

Всё!

Безошибочного Вам кода!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *