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)
这不起作用,我无法自己解决原因.请帮忙,谢谢.
如果你不确定,试着回应一下究竟是什么$_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 ?>".