PHP报告foreach()的无效参数。为什么?

时间:2011-08-11 17:30:08

标签: php

在下面的代码中,$ 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>";
?>

2 个答案:

答案 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') );