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

Тема в разделе "PHP", создана пользователем ravist, 25 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ravist

    ravist

    Регистр.:
    24 июл 2007
    Сообщения:
    202
    Симпатии:
    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 - как-то некрасиво).
     
  2. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    308
    Симпатии:
    38
    Можно так
    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');
        } }
    нужно все проверять пищу спросони.
     
    ravist нравится это.
  3. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    Или так:
    PHP:
    $a = array('a''б''в''г'); //полный массив значений
    if (in_array($do$a)) 
    {
      echo 
    popular_bukva($do'20');
    }    
     
    ravist нравится это.
  4. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    Без проверок и без значений, можно одной строкой:
    PHP:
    echo popular_bukva(substr($_GET['do'],0,1), '20');
    С проверкой можно как написал Alix. В принципе много if это switch, но тут столько if-ов конечно не оптимально.
     
    ravist нравится это.
  5. ravist

    ravist

    Регистр.:
    24 июл 2007
    Сообщения:
    202
    Симпатии:
    97
    Спасибо всем большое. Сделал с проверкой, как предложил Alix.
     
Статус темы:
Закрыта.