2016-02-26 184 views
-1

這是我的第一個問題,但我使用了很多,所以很抱歉。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的問題,用戶和我之間只是一個溝通的問題。 感謝您的幫助。 對於那些低估了我的問題的人,我假設你知道所有關於一切正確的事情。

+0

你知道'$ offset'在外部'foreach'循環的下一次迭代中被設置回'1'嗎?所以即使它發生了變化,它也會發生變化。 – jszobody

+0

嗨jszobody。是的,這是正確的,它需要在外循環中設置,我使用索引[0]的偏移量,這是一個排名,當學生是他自己時,它的0是排名並將偏移量設置爲0,因爲下一個指數將是正確的價值。 – bbattistini

+0

我沒有看到那個問題。你有一個變量,它正在改變,但後來改變了。你期望在這裏發生什麼事情沒有發生? – jszobody

回答

0

解決問題是,我被告知與排名陣列將被命令,但它不是,不是一個PHP問題,只是用戶和我之間的溝通問題。謝謝您的幫助。對於誰低估了我的問題,我認爲你知道所有關於一切正確的事情。