如何使用PHP将多个选项或具有不同值的数组中的选项设置为在选择框中选择的视图

如何使用PHP将多个选项或具有不同值的数组中的选项设置为在选择框中选择的视图,php,arrays,loops,html-select,selected,Php,Arrays,Loops,Html Select,Selected,选项值取自数据库,并与其他选项一起包含在选择框中。如何将从数据库获取的值设置为选定值 数据库中的值设置为$row['value'],并等于s。在HTML中,选项看起来像这样 <select name="select"> <option value='xxs'>Extra, Extra small</option> <option value='xs'>Extra small</option> <option value='s'&g

选项值取自数据库,并与其他选项一起包含在选择框中。如何将从数据库获取的值设置为选定值

数据库中的值设置为$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');
这与使用if和else语句设置变量相同,但更短。变量后面的第一部分询问$row['value']是否等于$value,如果等于$value,则$selected=“selected”else(:)$selected设置为空

接下来,我们将介绍这些选项。因为它在foreach循环中,所以我们只需要一行就可以插入所有选项

echo '<option '.$selected.' value="'.$value.'">'.$view.'</option>';
echo'.$view';
还记得上一步中的$selected变量吗?每次foreach循环通过在开始处设置的选项数组的一部分时,它都会检查$row['value']是否等于$value。如果是,则$selected将设置为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>';

给定此数组,且此值为选定值

$options = array(
                 'Extra, Extra small' => 'xxs',
                 'Extra small' => 'xs',
                 'Small' => 's',
                 'Medium' => 'm',
                 'Large' => 'l',
                 'Extra Large' => 'xl',
                 'Extra, Extra Large' => 'xxl'
           );

$selected = 'm';  // $selected can be swapped for $row['value'] as in the OP 
有几种方法可以动态地在
中构造选项标记,并在其中一个上设置
selected
属性

首先,foreach循环中的一个衬里:

echo "<select name=\"select\">";
    foreach($options as $text=>$value){
        echo "<option value=\"$value\"" , ($selected == $value ? " selected" : "") , ">$text</option>";
    }
echo "</select>";
标准(如果有条件):

echo "<select name=\"select\">";
    foreach($options as $text => $value){
        echo "<option value=\"$value\"";
            if($selected == $value){
                echo " selected";
            }
        echo ">$text</option>";
    }
echo "</select>";
echo”“;
foreach($text=>$value形式的选项){
回显“$text”;
}
回声“;
同一方法的所有上述版本将创建此呈现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" selected>Medium</option><option value="l">Large</option><option value="xl">Extra Large</option><option value="xxl">Extra, Extra Large</option></select>
Extra,Extra-smallExtra-smallmediumlargeextra-LargeExtra,超大
这是为便于阅读而设置的源代码:

<select name="select">
    <option value="xxs">Extra, Extra small</option>
    <option value="xs">Extra small</option>
    <option value="s">Small</option>
    <option value="m" selected>Medium</option>
    <option value="l">Large</option>
    <option value="xl">Extra Large</option>
    <option value="xxl">Extra, Extra Large</option>
</select>

额外的,额外的
超小
小的
中等
大的
特大型
特大号
echo "<select name=\"select\">";
    foreach($options as $text => $value){
        echo "<option value=\"$value\"";
            if($selected == $value){
                echo " selected";
            }
        echo ">$text</option>";
    }
echo "</select>";
<select name="select"><option value="xxs">Extra, Extra small</option><option value="xs">Extra small</option><option value="s">Small</option><option value="m" selected>Medium</option><option value="l">Large</option><option value="xl">Extra Large</option><option value="xxl">Extra, Extra Large</option></select>
<select name="select">
    <option value="xxs">Extra, Extra small</option>
    <option value="xs">Extra small</option>
    <option value="s">Small</option>
    <option value="m" selected>Medium</option>
    <option value="l">Large</option>
    <option value="xl">Extra Large</option>
    <option value="xxl">Extra, Extra Large</option>
</select>