代码之家  ›  专栏  ›  技术社区  ›  Twitchy

PHP中的全局变量捕获和数学

  •  -1
  • Twitchy  · 技术社区  · 8 年前

    为了不占用您太多的时间,我将简短地介绍一下,但我已经在PHP中的某个项目上工作了一段时间,我终于结束了。然而,我似乎很难掌握全局变量的这个概念,以及如何以我想要的方式成功地使用它,我不太清楚为什么。

    我的程序基本上做到了这一点:

    • 接收一组ID和表单组
    • 为他们创建一个页面,该页面包含所有信息的报告,按下按钮后即可下载
    • 按下按钮时获取成员总电流,并将其转换为全局变量,该全局变量现在将在页面上定义另一个选项(自上次报告以来的成员更改),方法是获取该值并从中减去总值

    从定义开始页开始的代码示例

    $GLOBALS['TheDifference']; //defines the variable for later use
    

            $MemberDifference;
            if ($MemberDifference == 0) {
                    $MemberDifference = $FailureMessage;
            }
    //the above will be blank at first due to nothing being in it
            $pastmembers = $GLOBALS['TheDifference'];
            if ($pastmembers == 0) {
                $pastmembers = $TotalMembers;
            }
    //this activates when the variable becomes filled
            $MemberDifference =  $pastmembers - $TotalMembers;
    

    最后,单击报告页面上的按钮时:

    $GLOBALS['TheDifference'] = $TotalMembers;
    

    问题是,我的MemberDifference变量始终为0,它们似乎并没有按我希望的那样保存(从这上面的代码中,0变成了该变量的任何值,然后将从过去的成员中减去新的TotalMembers)。

    我希望我解释得最多,甚至可能有太多的信息。PHP并不是我最好的语言,虽然我觉得我错过了一些非常简单的东西,但我一辈子都不能对它耿耿于怀。

    提前谢谢大家!

    *编辑,我需要全局变量的原因是因为这个程序基本上运行在许多不同的页面上,总共至少5个,全局变量是我唯一真正知道的实现这一点的方法。如果有更好的方法,请随时告诉我!

    2 回复  |  直到 8 年前
        1
  •  2
  •   jeroen    8 年前

    这不是网页的工作方式,当加载页面时,服务器上的脚本已经完成,并且您的变量已经删除。

    如果需要状态持久化,则不应使用全局变量(顺便说一句,您永远不需要这些变量…)而是会话或数据库。

    session_start(); 然后你可以使用 $_SESSION 数组来存储数据。

        2
  •  0
  •   RockTheShow    8 年前

    看起来您正试图在多次访问中保留关于访客的信息。(根据HTTP语义,两个页面构成两次访问。) 在这种情况下,一个好的解决方案是学习和使用 PHP Session .

    共享总计需要使用某种持久性存储,如文件或SQL数据库。

    推荐文章