PHP变量值不更新

时间:2016-02-26 02:10:37

标签: php variables if-statement scope

这是我在这里的第一个问题,但我经常使用它,所以对不起任何事情。

   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。 然后我为学生做内在的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并将$ offset重置为1.但是,在学生A之后,$ offset未按行$offset = 0;设置为0。我知道这段代码正在执行。

提前多多感谢。

解决 问题是,我被告知数组排序将被订购,但它不是,不是PHP问题,只是用户和我之间的沟通问题。 谢谢您的帮助。 对于那些低估我的问题的人,我假设你知道一切都是正确的。

1 个答案:

答案 0 :(得分:0)

解决问题是我被告知排序的数组将被排序,但它不是,不是php问题,只是用户和我之间的通信问题。谢谢您的帮助。对于那些低估我的问题的人,我假设你知道一切都是正确的。