2015-11-07 141 views
4

我創建小的統計數字,但有問題.. 我有鑽機誘餌從數據庫信息。如何避免if/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

魚,鑽機,誘餌,線似乎是彼此完全獨立的,因此條件可能分別適用於每一個。

下面的代碼使用三元運算符?:,但它本質上是一樣的單一的if-else結構:

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

請使用下面的代碼。當你檢查變量是否在會話中設置,然後修改字符串。所以如果任何一個會話被設置,那麼只有它會繼續。

​​