PHP If使用数组创建的select elemnet上的语句

Avi*_*nig 1 php arrays select if-statement

我是PHP的新手,遇到了一个我无法解决的问题.

说我们有这个:

<select name="car">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我的PHP是:

if (isset($_POST['car']) && $_POST['car'] == "Audi") {
    echo 'Please select a better car.';
}
Run Code Online (Sandbox Code Playgroud)

这很有效.但是,我在一个数组中生成了一个select:

<select name="q1" value="<?php echo $q1 ?>">
        <?php foreach ($toppings as $key => $value) { ?>
            <option <?php if ($q1 == $key) { ?>selected="true" <?php }; ?>value="<?php echo $key ?>"><?php echo $value ?></option>
        <?php } ?>
    </select>
Run Code Online (Sandbox Code Playgroud)

然后我写了这个PHP代码如下:

<?php
$toppings = array(1 => "Anchovie", 2 => "Tomato", 3 => "Corn", 4 => "Bulgarian", 5 => "Pineapple", 6 => "Pepperoni", 7 => "Green Olives", 8 => "Ground Beef", 9 => "Red Peppers", 10 => "Tuna", 11 => "Cheese");

if (isset($_POST['q1']) && $_POST['q1'] == "Cheese") {
    echo 'you selected cheese!.';
}
?>
Run Code Online (Sandbox Code Playgroud)

这不起作用,我无法自己解决原因.请帮忙,谢谢.

Ond*_*pil 5

如果你不确定,试着回应一下究竟是什么$_POST['q1'].

$_POST['q1'],将有您的值属性<option>,而不是其文本内容.在生成时<select>,你使用$ key作为value属性,因此你将有'1','2','3'而不是'Anchovie','Tomato'atd.

所以,要么改if (isset($_POST['q1']) && $_POST['q1'] == "Cheese")if (isset($_POST['q1']) && $_POST['q1'] == "11")或更改value="<?php echo $key ?>"value="<?php echo $value ?>".