尋找一種更優雅的方式將「selected」屬性指派給先前選擇的 <input> 元素
P粉635509719
P粉635509719 2024-01-16 20:46:55
0
1
430

我正在使用 PHP 建立一個簡單的 CRUD 應用程式。在建立頁面上,有一個下拉式選單,允許使用者選擇要輸入資訊的高速公路類型。在更新頁面上,我希望保留使用者在建立頁面上所做的選擇。使用者選擇的值已儲存在本機 JSON 物件中。我想出了以下解決方案:

<select name="route-type" id="route-type" required>

<option value="" selected="true" disabled>What type of route is this?</option>

<?php if( $highway['type'] == 'interstate') { ?>

<option value="interstate" selected>Interstate</option>
<option value="us-route">US Route</option>
<option value="state-route">State Route</option>

<?php } elseif ( $highway['type'] == 'us-route') { ?>
                
<option value="interstate">Interstate</option>
<option value="us-route" selected>US Route</option>
<option value="state-route">State Route</option>

<?php } elseif ( $highway['type'] == 'state-route') { ?>

<option value="interstate">Interstate</option>
<option value="us-route">US Route</option>
<option value="state-route" selected>State Route</option>

<?php } ?>

問題是這看起來相當重複,需要以某種方式重構或重寫。有什麼建議麼?顯然,如果下拉清單中有 30 個選擇,那麼 if 語句中有 30 個可能的結果是不正確的。

P粉635509719
P粉635509719

全部回覆(1)
P粉627136450

這是一個解決方案(未經測試):

$options = [
  'interstate' => 'Interstate',
  'use-route' => 'US Route',
  'state-route' => 'State Route'
];

foreach($options as $k=>$v) {
  echo "<option value=\"$k\"" . ($k===$highway['type']?'selected':'') . " />$v</option>\n";
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板