如何使用PHP在选择框中选择的多个选项或具有不同值的数组的选项中设置选项
作者:互联网
选项值取自数据库,并包含在选择框中以及其他选项中.如何设置从数据库中选择的值?
数据库中的值设置为$row [‘value’]并等于s.在HTML中,选项看起来像……
<select name="select">
<option value='xxs'>Extra, Extra small</option>
<option value='xs'>Extra small</option>
<option value='s'>Small</option>
<option value='m'>Medium</option>
<option value='l'>Large</option>
<option value='xl'>Extra Large</option>
<option value='xxl'>Extra, Extra small</option>
</select>
我想要的是在页面加载时显示的$row [‘value’](小)选项……这可能吗?
解决方法:
好消息是,这是可能的,在PHP中非常简单.首先,我们将所有选项及其各自的值放在一个数组中,如下所示:
<?php
$options=array('Extra, Extra small'=>'xxs','Extra small'=>'xs','Small'=>'s','Medium'=>'m','Large'=>'l','Extra Large'=>'xl','Extra, Extra Large'=>'xxl');
通过打开选择框并在foreach循环中调用options数组来执行此操作…
echo '<select>';
foreach($options as $view=>$value){
您可能已经注意到,数组包含的字段看起来像’Large’=>’l’,而for each循环调用的选项为$view => $value. $view表示名称字段,在本例中为“Large”,$value表示值字段“l”.如果您希望用户在选择框中看到不同于设置值的选项,这一点很重要.
接下来我们创建变量$selected,它将用于确定$row [‘value’]和$value之间是否匹配…
$selected=($row['value'] == $value)? "selected" : "";
这与使用if和else语句设置变量相同,但更短.变量之后的第一部分是询问$row [‘value’]是否等于$value,如果是,则$selected =“selected”else(:) $selected设置为空白.
接下来我们包括选项.因为它在foreach循环中,我们只需要一行来插入所有选项……
echo '<option '.$selected.' value="'.$value.'">'.$view.'</option>';
还记得上一步中的$selected变量吗?每次foreach循环遍历开头的选项数组的一部分时,它会检查$row [‘value’]是否等于$value.如果是,那么$selected将被设置为选中,并且该特定选项将是页面加载时显示的选项.它将继续遍历阵列的其余部分,直到扫描完所有视图和值并返回其各自的选项.
最后我们关闭foreach循环和选择框…
}
echo '</select>';
并且你有它,一种自动方式使选择框选项设置为选中.类似的模式可用于复选框,无线电选择器,选项卡等.
完整代码……
<?php
$options=array('Extra, Extra small'=>'xxs','Extra small'=>'xs','Small'=>'s','Medium'=>'m','Large'=>'l','Extra Large'=>'xl','Extra, Extra Large'=>'xxl');
echo '<select>';
foreach($options as $view=>$value){
$selected=($row['value'] == $value)? "selected" : "";
echo '<option '.$selected.' value="'.$value.'">'.$view.'</option>';
}
echo '</select>';
标签:selected,php,arrays,loops,html-select 来源: https://codeday.me/bug/20190926/1820312.html