【发布时间】:2014-01-18 01:51:59
【问题描述】:
抱歉,如果这是一个愚蠢的问题,但我现在正在学习 PHP,我遇到了一个问题,关于对 $_POST 值进行 isset 检查,这取决于用户是否提交了一个可能存在或不存在的值形式与否。
如果我在 foreach 循环的上下文之外执行以下操作,我会收到一条未定义的索引消息(当表单尚未提交时),正如我所期望的:
if ($_POST['dorm'] == "somethingrandom"){ ... }
据我了解,我收到此错误是因为 $_POST 值不存在,我需要通过 isset() 或 !empty() 检查运行它,而不是假设它存在。但如果我在 foreach 循环中有完全相同的代码,我不会收到错误:
<form action="test.php" method="post">
<select name="dorm">
<?php foreach ($DORMS as $dorm){
if ($_POST['dorm'] == $dorm){
echo "<option selected value=\"$dorm\">$dorm</option>";
} else {
echo "<option value=\"$dorm\">$dorm</option>";
}
}
?> // end php tag
</select>
</form>
同样,上面的代码不会产生任何错误,即使我没有进行任何 isset() 或 !empty() 检查。我只是想知道这是否是预期的行为,如果是,为什么?
任何澄清将不胜感激!谢谢。
【问题讨论】:
-
我在 foreach 循环内部和外部得到未定义的索引,正如预期的那样,使用 php 5.3.10。你用的是什么版本?
-
for each 循环中可能没有任何内容.. :)
-
能否在 foreach 循环中回显 $_POST['dorm'] 和 $dorm 的值,然后您就可以知道是什么值了。
-
你在 if 语句的右括号后错过了关闭的 php 标签。
-
你的 foreach 剂量只工作一次