Это мой первый вопрос здесь, но я использую это много, поэтому прошу прощения за все.Значение переменной PHP не обновляется
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();
}
}
}
}
Кодекс работает без ошибок, но переменные $ смещения не изменяются, если внутри, и если код выполняется, потому что подтвержден его в базе данных. $ db variable - это экземпляр другого класса, и этот класс не имеет переменных с именем $ offset. Я понятия не имею, почему он не работает, может ли кто-нибудь мне помочь?
Пример: У меня есть 4 студентов, которые ранжируются, но один из них является сам студент, студент говорят давайте А. Индекс массива, где они начинается с 0, но я могу» т имеют ранг 0, поэтому я добавляю 1. смещения Тогда я внутренний Еогеасп для студентов, и он должен идти, как:
Student C 0(index) + 1(offset) = 1
Student B 1(index) + 1(offset) = 2
Student A = 0
Student D 3(index) + 0(offset)
После всех 4 студента оценивается я возвращаюсь к наружному Еогеаспу и сбросить $ offset на 1. Однако происходит то, что после Студента A смещение $ не устанавливается равным 0 в соответствии с линия $offset = 0;
. И я знаю, что этот блок кода выполняется.
Большое спасибо.
решаемые Проблема заключалась в том, что мне сказали, что массив с ранжированием прикажут, но это не так, не проблема, PHP, просто проблема связи между пользователем и мной. Спасибо за помощь. И тому, кто отказался от моего вопроса, я предполагаю, что вы знаете все обо всем, что касается гениального.
Вы понимаете, что '$ offset' возвращается к' 1' на следующей итерации вашего внешнего цикла foreach? Так что, даже если он меняется, он сразу меняет. – jszobody
Привет jszobody. Да, это правильно, его нужно отменить во внешнем цикле, я использую смещение из-за индекса [0], это ранжирование, которое, когда сам ученик является 0, является рангом и устанавливает смещение в 0, потому что следующий индекс будет правильным значением. – bbattistini
Я не понимаю, в чем проблема. У вас есть переменная, она изменяется, а затем меняет назад. Что вы ожидаете отсюда, что этого не происходит? – jszobody