简化多个回声

use*_*391 3 php if-statement echo simplify

我在选择菜单中有完整的时区列表,如下所示:

<option value="Pacific/Kosrae"> Pacific/Kosrae( +11:00 GMT ) </option>
  <option value="Pacific/Kwajalein"> Pacific/Kwajalein( +12:00 GMT ) </option>
  <option value="Pacific/Majuro"> Pacific/Majuro( +12:00 GMT ) </option>
  <option value="Pacific/Marquesas"> Pacific/Marquesas( -09:30 GMT ) </option>
  <option value="Pacific/Midway"> Pacific/Midway( -11:00 GMT ) </option>
Run Code Online (Sandbox Code Playgroud)

这个清单永远存在.

我想将每个选项更改为以下格式:

if($_SESSION['timezone'] == 'Africa/Abidjan') {
echo '<option selected="selected" value="Africa/Abidjan"> Africa/Abidjan( +00:00 GMT ) </option>'; 
} else {
echo '<option value="Africa/Abidjan"> Africa/Abidjan( +00:00 GMT ) </option>';
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用php来避免复制粘贴并手动编辑每个选项?

Mic*_*zek 6

将数据存储在某些数据结构中,并使用循环.例如,使用从时区名称到偏移的地图:

$timezones = array(
    'Pacific/Kosrae' => '+11:00',
    'Pacific/Kwajalein' => '+12:00',
    ...
);

foreach($timezones as $name => $offset) {
    echo "<option value=\"$name\"" . ($name == $_SESSION['timezone'] ? " selected" : "") . ">$name( $offset GMT ) </option>\n";
}
Run Code Online (Sandbox Code Playgroud)