在一个页面上运行多个Else If语句


Running more then one Else If statement on a page PHP

我想知道在一个PHP页面上运行两个(或更多)else if语句的最佳方法是什么。这是一个形式的一部分,它寻找一个票的类型和多少天。我需要在一页上运行两个这样的语句,我似乎不工作,因为一旦它遇到一个真语句,它就停止了。我怎样才能让它工作?

<?php
    if($ticket_type=='Child (5 & Under)'){
     echo "
     <select name='"ticket_type[]'">
       <option value='"'">Select one...</option>
       <option selected='"selected'">Child (5 &amp; Under)</option>
       <option>Child (6 - 12)</option>
       <option>Teen (13 - 17)</option>
     </select>";
    }else if($ticket_type=='Child (6 - 12)'){
     echo "
     <select name='"ticket_type[]'">
       <option value='"'">Select one...</option>
       <option>Child (5 &amp; Under)</option>
       <option selected='"selected'">Child (6 - 12)</option>
       <option>Teen (13 - 17)</option>
     </select>";
    }else if($ticket_type=='Teen (13 - 17)'){
     echo "
     <select name='"ticket_type[]'">
       <option value='"'">Select one...</option>
       <option>Child (5 &amp; Under)</option>
       <option>Child (6 - 12)</option>
       <option selected='"selected'">Teen (13 - 17)</option>
     </select>";
    }else{
     echo "
     <select name='"ticket_type[]'">
       <option value='"'">Select one...</option>
       <option>Child (5 &amp; Under)</option>
       <option>Child (6 - 12)</option>
       <option>Teen (13 - 17)</option>
     </select>";

  }?>


<?php
        if($days=='1 Day'){
         echo "
         <select name='"ticket_type[]'">
           <option value="">Select one...</option>
           <option selected='"selected'">1 Day</option>
           <option>2 Days</option>
           <option>3 out of 4 Days</option>
         </select>";
        }else if($days=='2 Days'){
         echo "
         <select name='"ticket_type[]'">
           <option value="">Select one...</option>
           <option>1 Day</option>
           <option selected='"selected'">2 Days</option>
           <option>3 out of 4 Days</option>
         </select>";
        }else if($days=='3 out of 4 Days'){
         echo "
         <select name='"ticket_type[]'">
           <option value="">Select one...</option>
           <option>1 Day</option>
           <option>2 Days</option>
           <option selected='"selected'">3 out of 4 Days</option>
         </select>";
        }else{
         echo "
         <select name='"days[]'">
           <option value="">Select one...</option>
           <option>1 Day</option>
           <option>2 Days</option>
           <option>3 out of 4 Days</option>
         </select>";
        }?>

您可以极大地简化代码:

$options = array(
   'Select One' => 'Select One',
   '1 Day' => '1 Day',
   '2 Days' => '2 Days',
   '3 or more' => '3 or More'
);
echo '<select name="ticket_type[]">';
foreach($options as $key => $val) {
   $select = (($key == $days) ? ' selected="selected"' : '');
   echo "<option value='"", htmlspecialchars($key), "'"$select>", htmlspecialchars($val), "</option>";
}
echo '</select>';

这样,你只有一个地方指定了选择选项,所以如果你将来需要添加更多,你只需要改变那一个地方。现在,您必须更改if()块的每个部分,这将变得繁琐且容易出错。

天哪…你为什么把事情弄得这么复杂?

<select name="ticket_type[]">
   <option value="">Select one...</option>
   <option <? echo ($ticket_type == 'Child (5 &amp; Under) ? 'selected="selected" : ''; ?>'>Child (5 &amp; Under)</option>
   <option <? echo ($ticket_type == 'Child (6 - 12) ? 'selected="selected" : ''; ?>>Child (6 - 12)</option>
   <option <? echo ($ticket_type == 'Child (13 - 17) ? 'selected="selected" : ''; ?>>Teen (13 - 17)</option>
</select>";

但是你真的应该考虑使用ID,这样你就不用比较字符串了

哎呀,这有点乱。你应该阅读一下PHP的替代语法。

<?php if ($condition): ?>
This is a test..
<?php endif; ?>