PHP变量值未更新

PHP变量值未更新,php,variables,if-statement,scope,Php,Variables,If Statement,Scope,这是我在这里的第一个问题,但是我经常使用这个,所以很抱歉 foreach($quizzData->questions->children() as $quest) { $questDesc = $quest->direction; $offset = 1; if(strpos($questDesc, "student") !== false) {

这是我在这里的第一个问题,但是我经常使用这个,所以很抱歉

   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。 然后,我为学生们做了内部讲演,应该是这样的:

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问题,只是用户和我之间的通信问题。谢谢你的帮助。不管是谁否决了我的问题,我想你都知道,对吧?genious。

你意识到,
$offset
在你的外部
foreach
循环的下一次迭代中被设置回
1
,对吗?所以即使它在变,它也会变回来。嗨,jszobody。是的,这是正确的,它需要放回外循环,我使用偏移量,因为索引[0],这是一个排名,当学生自己是0时,它是排名,并将偏移量设置为0,因为下一个索引将是正确的值。我不知道问题出在哪里。您有一个变量,它正在被更改,但随后又被更改回来。你认为这里会发生什么事情而没有发生?让我做一个例子:我有4个学生被排名,但其中一个是学生本人,比如说学生A。数组索引从0开始,所以我做内部foreach循环学生,但我不能有排名0,所以我加上偏移量1。然后是这样的:学生c0(索引)+1(偏移量)=1学生b1(索引)+1(偏移量)=2学生A=0学生d3(索引)+0(偏移量)在所有4个学生都被评估后,我返回外部foreach并将$offset重置为1