這是我的第一個問題,但我使用了很多,所以很抱歉。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變量是另一個類的實例,並且該類沒有任何名爲$ offset的變量。 我不知道爲什麼它不工作,任何人都可以幫助我嗎?
例: 我被排在第4級的學生,但其中一人是學生本人,let's說學生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並將$偏移重置爲1.但是,發生的是,在學生A之後,$偏移沒有被設置爲0行$offset = 0;
。而且我知道這段代碼正在執行中。
非常感謝。
解決 的問題是,有人告訴我,與排名陣列將被訂購,但它不是,不是一個PHP的問題,用戶和我之間只是一個溝通的問題。 感謝您的幫助。 對於那些低估了我的問題的人,我假設你知道所有關於一切正確的事情。
你知道'$ offset'在外部'foreach'循環的下一次迭代中被設置回'1'嗎?所以即使它發生了變化,它也會發生變化。 – jszobody
嗨jszobody。是的,這是正確的,它需要在外循環中設置,我使用索引[0]的偏移量,這是一個排名,當學生是他自己時,它的0是排名並將偏移量設置爲0,因爲下一個指數將是正確的價值。 – bbattistini
我沒有看到那個問題。你有一個變量,它正在改變,但後來改變了。你期望在這裏發生什麼事情沒有發生? – jszobody