寻找一种更优雅的方式将'selected”属性分配给先前选择的 <input> 元素
P粉635509719
P粉635509719 2024-01-16 20:46:55
0
1
428

我正在使用 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";
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板