【问题标题】:PHP variable value not updatingPHP变量值不更新
【发布时间】:2016-02-26 02:10:37
【问题描述】:

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

   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问题,只是用户和我之间的通信问题。 谢谢您的帮助。 对于那些否决我的问题的人,我假设您对所有事情都了如指掌。

【问题讨论】:

  • 您意识到$offset 在您的外部foreach 循环的下一次迭代中被设置回1,对吗?因此,即使它正在改变,它也会立即改变。
  • 嗨,jszobody。是的,这是正确的,它需要重新设置在外循环上,我使用偏移量是因为索引 [0],这是一个排名,当学生自己是 0 时,它的排名并将偏移量设置为 0,因为下一个索引将是正确的值。
  • 我没有看到问题所在。你有一个变量,它正在被改变,然后又被改回来。您希望这里发生什么没有发生的事情?
  • 举个例子:我有4个学生排名,但其中一个是学生本人,比如说学生A。数组索引从0开始,所以我做内部foreach 循环学生,但我不能有排名 0,所以我添加偏移量 1。然后它就像:学生 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

标签: php variables if-statement scope


【解决方案1】:

已解决问题是我被告知带有排名的数组将被排序,但这不是,不是php问题,只是用户和我之间的通信问题。谢谢您的帮助。对于那些否决我的问题的人,我假设您对所有事情都了如指掌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多