这是我在这里的第一个问题,但我经常使用它,所以对不起任何事情。
foreach($quizzData->questions->children() as $quest)
{
$questDesc = $quest->direction;
$offset = 1;
if(strpos($questDesc, "student") !== false)
{
foreach($quest->answers->children() as $questChild)
{
$name = trim($questChild);
$result = $db->executeSQL("CALL SPU_SE_STUDENT_ID('$name')")->fetch_assoc();
$studentID = $result['ID_STUDENT'];
$db->freeResult();
$pos = $questChild['userDefinedPosition'] + $offset;
if( $quizSummary['studentID'] == $studentID)
{
$offset = 0;
$sql = "CALL SPU_IN_STUDENT_EVAL_SUMMARY ($period, {$quizSummary['studentID']}, $studentID,0)";
$db->executeSQL($sql);
$db->freeResult();
}
else
{
$sql = "CALL SPU_IN_STUDENT_EVAL_SUMMARY ($period, {$quizSummary['studentID']}, $studentID,$pos)";
$db->executeSQL($sql);
$db->freeResult();
}
}
}
}
代码运行没有错误,但变量$offset在 if 中没有更改,并且 if 代码正在执行,因为我在数据库上验证了它。$db变量是另一个类的实例,该类没有任何名为 $offset 的变量。我不知道为什么它不起作用,谁能帮我?
例: 我有 4 名学生被排名,但其中一个是学生本人,比如学生 A。它们所在的数组索引从 0 开始,但我不能有排名 0,所以我添加了偏移量 1。然后我为学生做内部foreach,它应该是这样的:
Student C 0(index) + 1(offset) = 1
Student B 1(index) + 1(offset) = 2
Student A = 0
Student D 3(index) + 0(offset)
在所有 4 名学生都进行评估后,我回到外部 foreach 并将$offset重置为 1。但是,发生的情况是,在学生 A 之后,$offset没有按照第 $offset = 0;
行设置为 0。我知道这段代码正在执行。
提前非常感谢。
解决问题是我被告知将排序带有排名的数组,但这不是 php 问题,只是用户和我之间的通信问题。感谢您的帮助。对于谁对我的问题投了反对票的人,我想你对一切都了如指掌,天才。
已解决 问题是我被告知将排序带有排名的数组,但这不是 php 问题,只是用户和我之间的通信问题。感谢您的帮助。对于谁对我的问题投了反对票的人,我想你对一切都了如指掌,天才。