我正在尝试使用从数据库中查询的数据填充一组文本框。
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个填充学生[] []。
我无法弄清楚为什么它适用于前两个而不是其他两个。请告诉我这不是一个简单的语法错误。
答案 0 :(得分:1)
var students = [[],[]];
students
是一个包含2个元素的数组。访问第3个元素(students[2]
)会产生undefined
。 students[2][0]
为undefined[0]
,这是一个错误。
要解决此问题,您需要使用students
元素初始化$query->rowCount()
,而不仅仅是2。
或者,添加
echo "students[$i] = [];";
在你的循环开始。