2014-09-04 5 views
-1

Итак, у меня есть эта простая функция, потому что я слишком ленив, чтобы выписывать раскрывающийся список состояний каждый раз, когда мне это нужно. У меня уже есть массив со всеми установленными состояниями, сокращениями как ключи и имена в качестве значений. Он работает отлично, но мне нравится писать краткий, чистый, разборчивый код, и я все еще очень неспособен, поэтому считаю, что я пропустил много глупо простых s *** (цена, которую я плачу за обучение и не практикую часто достаточно).Код для написания кода

Я вижу четыре строки избыточного кода внутри двух основных условных выражений, и я бы переместил их за пределы оператора if, за исключением того, что у меня есть это последнее выражение эха, которое на самом деле является цельной целью для условия в первую очередь , и я не думаю, что повторная проверка переменной $style - это все, что кошерно.

Есть ли простая практика, которую я просто пропустил, как сделать это чище?

function create_state($style, $form = NULL) { 
    global $state; 
    echo '<select name="state">'."\n"; 
    echo '<option value="">--</option>'."\n"; 
    if ($style === 'abbr') { 
    ksort($state);  
    foreach ($state as $abbr => $name) { 
     echo "<option value=\"$abbr\""; 
     if($form === $abbr) 
     echo 'selected="selected"'; 
     echo ">$abbr</option>\n"; 
    } 
    } else { 
    asort($state);  
    foreach ($state as $abbr => $name) { 
     echo "<option value=\"$abbr\""; 
     if($form === $abbr) 
     echo 'selected="selected"'; 
     echo ">$name</option>\n"; 
    } 
    } 
    echo '</select>'."\n"; 
} 
+3

Если это работает, вы можете искать http://codereview.stackexchange.com/ – 13ruce1337

+2

это должны быть размещены на просмотр кода , не здесь – 2014-09-04 02:13:09

+0

буксировать быстрые подсказки в любом случае: глобальный - плохо проанализировать его в аргументах функции, эхо в функции плохой, объединить вывод и вернуть его как выход функции – 2014-09-04 02:14:43

ответ

1

Вы можете использовать ссылочную переменную:

if ($style == 'abbr') { 
    ksort($state); 
    $print = &$abbr; // print abbreviation 
} else { 
    asort($state); 
    $print = &$name; // print full name 
} 
foreach ($state as $abbr => $name) { 
    echo "<option value=\"$abbr\""; 
    if($form === $abbr) 
    echo 'selected="selected"'; 
    echo ">$print</option>\n"; 
} 
1
function create_state($style, $form = NULL) { 
    global $state; 

    var $output = ''; 

    $output .= '<select name="state">'; 
    $output .= '<option value="">--</option>'; 

    ($style === 'abbr') ? ksort($state) : asort($state); 

    foreach ($state as $abbr => $name) { 

     $selected = ($form === $abbr) ? 'selected="selected"' : ''; 
     $toShow = ($form === $abbr) ? $abbr : $name; 
     $output .= '<option '.$selected.' value="'.$abbr.'">'.$toShow.'</option>'; 
    } 

    $output .= '</select>'; 

    echo $output; 
} 
Смежные вопросы