php for循环的前半部分可能正在运行,也可能没有运行

时间:2016-06-24 21:55:28

标签: php for-loop pdo

我正在尝试使用从数据库中查询的数据填充一组文本框。

php for循环运行4次,下拉列表中有4个名称。但是,只有前两个下拉选项有效(填充文本框,此处未显示)

echo "<script> var students = [[],[]];";
$students = "";
for($i=0; $i<$query->rowCount(); $i++) {
    echo "students[$i][0] = " . $result[$i]['studentID'] . ";";
    echo "students[$i][1] = " . $result[$i]['coachID'] . ";";
    echo "students[$i][2] = " . $result[$i]['schoolID'] . ";";
    echo "students[$i][3] = '" . $result[$i]['firstName'] . "';";
    echo "students[$i][4] = '" . $result[$i]['lastName'] . "';";
    echo "students[$i][5] = " . $result[$i]['grade'] . ";";
    $students .= "<option value='$i'>" . $result[$i]['firstName'] ."</option>";
}
echo "</script>";

Chrome的调试器在页面加载时抛出错误,“Uncaught TypeError:无法设置未定义的属性'0'”引用php生成的代码行,“学生[2] [0] = 56784”

我把消息放在Google上,发现this page确认(我认为?)for循环只用4个记录中的2个填充学生[] []。

我无法弄清楚为什么它适用于前两个而不是其他两个。请告诉我这不是一个简单的语法错误。

1 个答案:

答案 0 :(得分:1)

var students = [[],[]];

students是一个包含2个元素的数组。访问第3个元素(students[2])会产生undefinedstudents[2][0]undefined[0],这是一个错误。

要解决此问题,您需要使用students元素初始化$query->rowCount(),而不仅仅是2。

或者,添加

echo "students[$i] = [];";

在你的循环开始。