Помогите уменьшить код php (записать по-другому)

Статус
В этой теме нельзя размещать новые ответы.

ravist

Гуру форума
Регистрация
24 Июл 2007
Сообщения
201
Реакции
97
Сразу прошу прощения за свою неопытность. Я не программист.
Помогите уменьшить код php, т.к. я подозреваю что мое написание не оптимальное.
Вкратце суть. Музыкальный портал. Добавляю страницы с песнями начинающимися на определенную букву/цифру. (0,1,2,...,а,б,в,...a,b,c...)
Я это организовал передачей параметра:
т.е. /bukva.php?do=а - страница с песнями на букву "а".
В коде записал вот так:
PHP:
	if($do == 'а')
	{
		echo popular_bukva('а', '20');
	}
	if($do == 'б')
	{
		echo popular_bukva('б', '20');
	}
	if($do == 'в')
	{
		echo popular_bukva('в', '20');
	}
	if($do == 'г')
	{
		echo popular_bukva('г', '20');
	}
	if($do == 'д')
	{
		echo popular_bukva('д', '20');
	}
	if($do == 'е')
	{
		echo popular_bukva('е', '20');
	}
	if($do == 'ё')
	{
		echo popular_bukva('ё', '20');
	}
	...
popular_bukva - функция, которая выдает результат.
Можно ли это записать как-то проще (перечислять 60 раз if - как-то некрасиво).
 
Можно так
PHP:
if(!empty($do)){
echo popular_bukva($do, '20');
}
но это не точно тк юзер может написать "ф127483" но можно и так
PHP:
$arr = array(a,b,...);
for($i=0;$i<count($arr);$i++){
if($do == $arr[$i])
    {
        echo popular_bukva($arr[$i], '20');
    } }
нужно все проверять пищу спросони.
 
Или так:
PHP:
$a = array('a', 'б', 'в', 'г'); //полный массив значений
if (in_array($do, $a)) 
{
  echo popular_bukva($do, '20');
}
 
Без проверок и без значений, можно одной строкой:
PHP:
echo popular_bukva(substr($_GET['do'],0,1), '20');
С проверкой можно как написал Alix. В принципе много if это switch, но тут столько if-ов конечно не оптимально.
 
Спасибо всем большое. Сделал с проверкой, как предложил Alix.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху