2015-11-07 5 views
4

Я создаю немного статистики, но есть проблема .. У меня есть рыба, Рог, приманка и линия информации из базы данных.Как избежать повторения/elseif?

И я хочу проверить все возможные варианты этой информации. Мой код выглядит следующим образом:

if ((isset($_SESSION['fish_id'])) && (isset($_SESSION['rig_id'])) && (isset($_SESSION['bait_id'])) && (isset($_SESSION['line_id']))) { 

    echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
    echo '<div class="list-notes"> <ul> <li class="name">'; 
    echo 'FISH , RIG , BAIT , LINE'; 
    echo '</li></ul></div>'; 

} elseif ((isset($_SESSION['fish_id'])) && (isset($_SESSION['rig_id'])) && (isset($_SESSION['bait_id'])) && (!isset($_SESSION['line_id']))) { 

    echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
    echo '<div class="list-notes"> <ul> <li class="name">'; 
    echo 'FISH , RIG , BAIT , *LINE*'; 
    echo '</li></ul></div>'; 

} elseif ((isset($_SESSION['fish_id'])) && (isset($_SESSION['rig_id'])) && (!isset($_SESSION['bait_id'])) && (isset($_SESSION['line_id']))) { 

    echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
    echo '<div class="list-notes"> <ul> <li class="name">'; 
    echo 'FISH , RIG , *BAIT* , LINE'; 
    echo '</li></ul></div>'; 

} elseif ((isset($_SESSION['fish_id'])) && (!isset($_SESSION['rig_id'])) && (isset($_SESSION['bait_id'])) && (isset($_SESSION['line_id']))) { 

    echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
    echo '<div class="list-notes"> <ul> <li class="name">'; 
    echo 'FISH , *RIG* , BAIT , LINE'; 
    echo '</li></ul></div>'; 

} ((!isset($_SESSION['fish_id'])) && (isset($_SESSION['rig_id'])) && (isset($_SESSION['bait_id'])) && (isset($_SESSION['line_id']))) { 

    echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
    echo '<div class="list-notes"> <ul> <li class="name">'; 
    echo '*FISH* , RIG , BAIT , LINE'; 
    echo '</li></ul></div>'; 

} 

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

Как я могу избежать этого повторение?

ответ

4

Рыба, буровая установка, приманка, линия, по-видимому, полностью независимы друг от друга, , поэтому условия могут применяться отдельно к каждому из них.

Код ниже использует тройной оператор ?:, но это, по существу, такой же, как один, если-то еще конструкта:

echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
echo '<div class="list-notes"> <ul> <li class="name">'; 

$items = array(); 
$items[] = isset($_SESSION['fish_id']) ? 'FISH' : '*FISH*'; 
$items[] = isset($_SESSION['rig_id']) ? 'RIG' : '*RIG*'; 
$items[] = isset($_SESSION['bait_id']) ? 'BAIT' : '*BAIT*'; 
$items[] = isset($_SESSION['line_id']) ? 'LINE' : '*LINE*'; 
echo join(' , ', $items); 

echo '</li></ul></div>'; 

Или вы можете сделать это еще более обобщенно с петлей (это имело бы смысл если у вас было больше предметов, возможно, если это имеет смысл с четырьмя фиксированными товарами):

echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
echo '<div class="list-notes"> <ul> <li class="name">'; 

$items = array(); 
foreach(array('fish', 'rig', 'bait', 'line') as $name) { 
    $id = $name . '_id'; 
    $nameUppercased = strtoupper($name); 
    $items[] = isset($_SESSION[$id]) ? $nameUppercased : "*$nameUppercased*"; 
} 
echo join(' , ', $items); 

echo '</li></ul></div>'; 
+0

@SashantPardeshi, да, именно поэтому есть слово предупреждения («спорно, если это имеет смысл с четырьмя фиксированными элементов»). –

+0

да, ты прав :) –

1

Пожалуйста, используйте код ниже. Когда вы проверяете, установлена ​​ли переменная в сеансе, а затем изменяете строку. Поэтому, если какой-либо из сеансов установлен, то только он будет продолжен.

if ((isset($_SESSION['fish_id'])) 
    || (isset($_SESSION['rig_id'])) 
    || (isset($_SESSION['bait_id'])) 
    || (isset($_SESSION['line_id']))) { 

    $names = array(); 
    $names[] = isset($_SESSION['fish_id']) ? 'FISH' : '*FISH*'; 
    $names[] = isset($_SESSION['rig_id']) ? 'RIG' : '*RIG*'; 
    $names[] = isset($_SESSION['bait_id']) ? 'BAIT' : '*BAIT*'; 
    $names[] = isset($_SESSION['line_id']) ? 'LINE' : '*LINE*'; 

        echo '<img class="img-responsive" src="../assets/img/choose_fish.png">'; 
        echo '<div class="list-notes"> <ul> <li class="name">'; 
        echo (string)implode(' , ', $names); 
        echo '</li></ul></div>'; 

} 
Смежные вопросы