2016-02-26 4 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 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, просто проблема связи между пользователем и мной. Спасибо за помощь. И тому, кто отказался от моего вопроса, я предполагаю, что вы знаете все обо всем, что касается гениального.

+0

Вы понимаете, что '$ offset' возвращается к' 1' на следующей итерации вашего внешнего цикла foreach? Так что, даже если он меняется, он сразу меняет. – jszobody

+0

Привет jszobody. Да, это правильно, его нужно отменить во внешнем цикле, я использую смещение из-за индекса [0], это ранжирование, которое, когда сам ученик является 0, является рангом и устанавливает смещение в 0, потому что следующий индекс будет правильным значением. – bbattistini

+0

Я не понимаю, в чем проблема. У вас есть переменная, она изменяется, а затем меняет назад. Что вы ожидаете отсюда, что этого не происходит? – jszobody

ответ

0

Решено Проблема заключалась в том, что мне сказали, что массив с ранжированием будет заказан, но это не проблема php, а только проблема связи между пользователем и мной. Спасибо за помощь. И тому, кто подчинил мой вопрос, я предполагаю, что вы знаете все о том, что правильно.