我对选择表格有疑问。我有一个包含从数据库中提取的字符串的变量,我希望select表单首先优先,并使其成为select表单的顶部。
$smode = "fade";
<select name='smode'>
<?php
$modes = array('horizontal', 'vertical', 'fade');
$i = 0;
while($i < 3){
echo "<option value='$modes[$i]'>$modes[$i]</option>";
$i++;
}
?>
</select>
因此,当变量$ smode是&#34; fade&#34;时,我想要在选择表单顶部的淡入淡出选项字段,当变量$ smode是&#34; vertical&#34;我希望顶部的垂直选项字段,依此类推。
希望有人可以帮助我。感谢。
答案 0 :(得分:2)
这应该可以解决问题。只需将输出存储在变量中。 为您的顶部定义一个,为其余定义一个。 在循环之后,您只需使用echo以所需顺序输出它们。
$smode = "fade";
<select name='smode'>
<?php
$modes = array('horizontal', 'vertical', 'fade');
$i = 0;
$options = '';
$topOption= '';
while($i < 3){
if($modes[$i] == $smode) {
$topOption = "<option value='$modes[$i]' selected='selected'>$modes[$i]</option>"
} else {
$options .= "<option value='$modes[$i]'>$modes[$i]</option>";
}
$i++;
}
echo $topOption . $options;
?>
</select>
另外,请阅读for循环。
$smode = "fade";
<select name='smode'>
<?php
$modes = array('horizontal', 'vertical', 'fade');
$options = '';
$topOption= '';
for($i =0; $i < 3;$i++){
if($modes[$i] == $smode) {
$topOption = "<option value='$modes[$i]' selected='selected'>$modes[$i]</option>"
} else {
$options .= "<option value='$modes[$i]'>$modes[$i]</option>";
}
}
echo $topOption . $options;
?>
</select>
甚至考虑foreach:
$smode = "fade";
<select name='smode'>
<?php
$modes = array('horizontal', 'vertical', 'fade');
$options = '';
$topOption= '';
foreach($modes as $modeItem){
if($modeItem == $smode) {
$topOption = "<option value='$modeItem' selected='selected'>$modeItem</option>"
} else {
$options .= "<option value='$modeItem'>$modeItem</option>";
}
}
echo $topOption . $options;
?>
</select>
答案 1 :(得分:0)
这也是一个解决方案(尚未测试,应该有效)
$smode = "vertical";
function cmp($a, $b) {
global $smode;
if ($b == $smode) {
return 1;
}
return 0;
}
$modes = array('horizontal', 'vertical', 'fade');
usort($modes, 'cmp');
print_r($modes);
答案 2 :(得分:0)
简单地从数组中删除主要项目,将其添加到第一个,而不是添加其余的
$smode = "fade";
echo "<select name='smode'>";
$modes = array('horizontal', 'vertical', 'fade');
//remove the primary item
$fixedmodes=array_diff($modes, array($smode));
//add the primary select option
echo "<option value='$smode'>$smode</option>";
//add the rest
foreach ($fixedmodes as $val) {
echo "<option value='$val'>$val</option>";
}
echo "</select>";
答案 3 :(得分:0)
这个问题归结为数组操作。
$smode = "fade";
$modes = array('horizontal', 'vertical', 'fade');
//remove the smode term from the array
$modes = array_diff($modes, array($smode) );
// ... and add it to the beginning
array_unshift($modes, $smode);
答案 4 :(得分:0)
您可以执行以下操作:
$modes = array('horizontal', 'vertical', 'fade');
$modes = array_diff( $modes, array($smode) );// create a new array without the top option
array_unshift($modes, $smode);//add the option to first position
//carry on...