我有我的PHP
$sel = "
<option> one </option>
<option> two </option>
<option> thre </option>
<option> four </option>
";
假设我有一个内嵌网址= site.php?sel=one
如果我没有在变量中保存这些选项,我可以这样做,使其中一个选项为SELECTED,其中value等于$_GET[sel]
<option <?php if($_GET[sel] == 'one') echo"selected"; ?> > one </option>
<option <?php if($_GET[sel] == 'two') echo"selected"; ?> > two </option>
<option <?php if($_GET[sel] == 'three') echo"selected"; ?> > three </option>
<option <?php if($_GET[sel] == 'four') echo"selected"; ?> > four </option>
但问题是,我需要将这些选项保存在变量中,因为我有很多选项,我需要多次调用该变量。
有没有办法在value = $_GET[sel]
?
答案 0 :(得分:15)
只需使用选项数组,即可查看当前选择的选项。
$options = array( 'one', 'two', 'three' );
$output = '';
for( $i=0; $i<count($options); $i++ ) {
$output .= '<option '
. ( $_GET['sel'] == $options[$i] ? 'selected="selected"' : '' ) . '>'
. $options[$i]
. '</option>';
}
旁注:我会将一个值定义为每个元素的某种id,否则当两个选项具有相同的字符串表示时,您可能遇到问题。
答案 1 :(得分:6)
foreach($array as $value=>$name)
{
if($value == $_GET['sel'])
{
echo "<option selected='selected' value='".$value."'>".$name."</option>";
}
else
{
echo "<option value='".$value."'>".$name."</option>";
}
}
答案 2 :(得分:3)
这是一个简单的例子,通过使用三元运算符来设置selected = selected
<?php $plan = array('1' => 'Green','2'=>'Red' ); ?>
<select class="form-control" title="Choose Plan">
<?php foreach ($plan as $key => $value) { ?>
<option value="<?php echo $key;?>" <?php echo ($key == '2') ? ' selected="selected"' : '';?>><?php echo $value;?></option>
<?php } ?>
</select>
答案 3 :(得分:0)
您缺少$_GET['sel']
的引号 - 修复此问题可能有助于更快地解决您的问题:)
答案 4 :(得分:0)
foreach ($array as $value => $name) {
echo '<option value="' . htmlentities($value) . '"' . (($_GET['sel'] === $value) ? ' selected="selected"') . '>' . htmlentities($name) . '</option>';
}
这是相当整洁的,而且,我认为,不言自明。
答案 5 :(得分:0)
您可以创建一个函数,然后将其添加到每个选项字段以打印 selected="selected"。
示例
<option value="PHP" ' . tsw_selected('PHP', $row['anchor']) . '>PHP/PDO/SQL[+]</option>
<option value="HTML" ' . tsw_selected('HTML', $row['anchor']) . '>HTML/CSS</option>
那么你的乐趣:
function tsw_selected( $opt, $val )
{
$sel = '';
$opt = ('' != $opt ) ? $opt : 'OTHER';
if( $opt == $val ) $sel = true;
if ( $sel ) {
return 'selected="selected"'; } else { return ''; }
}
这将根据 true 回显 select="selected" 并为 false 回显 '' (nothing)。 您可以设置 $sel = false,但这没有关系。布尔值检查 empty 为 false。