在下面的代码中,$ stu被声明为一个数组,但PHP报告了foreach()的无效参数。为什么呢?
echo "<table align='center' border='1px'><tr><td>";
echo "<form action='".$_SERVER['PHP_SELF']."' method='POST'>";
$students=array("Jack","John","Ryan");
foreach ($students as $key=>$stu)
{
echo "Please select a grade for $stu:";
echo "<select name='grade'>";
echo "<option>Grade A</option>";
echo "<option>Grade B</option>";
echo "<option>Grade C</option>";
echo "<option>Grade D</option>";
echo "<option>Grade E</option>";
echo "</select><br/>";
}
for ($i=0;$i<count($students);$i++)
{
echo "<input type='hidden' name='stu[]' value='$students[$i]'>";
}
foreach($stu as $arr_contents)
{
echo "$arr_contents";
}
echo "<input type='hidden' name='posted' value='true'>";
echo "<input type='submit' value='Enter'>";
echo "</form>";
echo "</tr></td></table>";
?>
答案 0 :(得分:2)
$stu
在第一个foreach
的范围内定义,该foreach
在其自己的foreach
中调用之前已关闭。在第一个// $stu is only known inside this block
foreach ($students as $key=>$stu)
{
}
循环结束时,它将包含最后使用的字符串值'Ryan'。
$stu
如果您想回显foreach
的内容,则必须在第一个{{1}}循环内完成。
答案 1 :(得分:2)
变量$students
未声明为值为数组的关联数组。它应该是这样的:
$students = array( "Jack" => array( 'array', 'contents' ), "John" => array( 'other', 'content') );