PHP foreach没有';t选择下拉列表


PHP foreach doesn't select the dropdown list

我有一个这样的html:

<option value="yes">Yes</option>
<option value="no">No</option>

和我的php:

<?php
exec('uci get sms_gateway.setting.filter',$filt);
echo '<form action='.$_SERVER['PHP_SELF'].' method="post">
<select name="filter">';
foreach ($filt as $value){
if ($filt = "yes"){
    echo '<option value="'.$value.'" selected>Yes</option><br>
          <option value="no">No</option><br>ini yes';}
else {
    echo '<option value="yes">Yes</option><br>
          <option value="'.$value.'" selected>No</option><br> ini no';
}
}
echo '
</select>
<input type="submit" name="submit" value="Submit">';
if(isset($_POST['submit'])){
    {
        $data = $_POST['filter'];
        echo "<br>halo ". $data;
    }
    }
?>

$filt只有一个字符串,它是yesno当是yes时,我希望在下拉菜单上选择"是"部分,但当是no时,我想要在下拉菜单中选择no部分。我该怎么做?

这段代码:

foreach ($filt as $value)您正在执行as $value,因此请使用:

foreach ($filt as $value){
 if ($value == "yes"){

然后你有两套不需要的背带;它们只是免费的额外按键:

if(isset($_POST['submit'])){
    {
        $data = $_POST['filter'];
        echo "<br>halo ". $data;
    }
    } 

更改为:

if(isset($_POST['submit'])){
        $data = $_POST['filter'];
        echo "<br>halo ". $data;
    }

我发现的另一件事,一个丢失的关闭</form>标签。


为了记录在案,您还使用了一个=符号进行分配,而不是使用两个==进行比较:

if ($filt = "yes")

理论上应该读作

if ($filt == "yes")

错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:错误报告只能在临时阶段进行,而不能在生产阶段进行。

您的代码有很多错误,您将"$filt"视为数组和值,您还分配(=)而不是比较。我会给你一个工作的例子,而不是试图修复你的代码:

<?php $possibleValues = array('yes', 'no'); // All possible options ?>
<?php $valueYouWantSelected = 'yes'; // 'yes' will be selected ?>
<select>
    <?php foreach ($possibleValues as $value): ?>
        <?php $selected = ($valueYouWantSelected == $value) ? 'selected' : null; // Select this option if it equals $valueYouWantSelected ?>
        <option value="<?php echo $value;?>" <?php echo $selected; ?>>
            <?php echo $value; ?>
        </option>
    <?php endforeach ?>
</select>

如果您对如何分配$selected感到困惑,请查看三元运算符。

此外,我使用了替代语法,它可以更容易地在HTML中组织PHP代码(并在编辑器中正确地为代码着色)。