【问题标题】:PHP variable scope manual "The global keyword" [duplicate]PHP变量范围手册“全局关键字” [重复]
【发布时间】:2015-04-22 11:41:12
【问题描述】:

根据“全局关键字”部分中的PHP variable scope manual,我们有以下代码:

<?php
    $a = 1;
    $b = 2;

    function Sum()
    {
        global $a, $b;

        $b = $a + $b;
    } 

    Sum();
    echo $b;
?>

上面的脚本会输出3。

但在我的情况下是回显 2。

我误会了什么?

【问题讨论】:

  • 无法重现:3v4l.org/Xq3kU 也许重启你的服务器。
  • 它工作正常,对我来说..
  • 出于任何我不知道的原因在 .php 文件中回显 3 和在 .phtml 文件中回显 2。谁能用几句话解释原因?
  • @FranMercaes 1. 您是否重新启动了服务器? 2.你有什么php版本? 3. 这是你的全部剧本吗? 4. 文件扩展名是什么?
  • @FranMercaes PHP 在那些日子里一直是程序化的,今天您可以决定是继续编写程序代码还是切换到面向对象的编程。这意味着有一些像global 这样的关键字不再需要了,我不建议学习那些旧东西。 global 始终表示全局/静态上下文,这意味着没有隔离组件,这对 OOP 程序员来说是不好的做法。但现在解决您的问题:尝试将您的 error_reporting 设置为 E_ALL。也许较新的 PHP 版本有全局标记已弃用,或者它只是您的代码中的一个错字?

标签: php


【解决方案1】:

您必须调用 Sum() 函数才能修改 $b 的值。确保在回显之前调用它。如果您将 $a 和 $b 封装在函数、类或命名空间中,则不会像该示例中那样工作。

【讨论】:

  • 正如您在 OP 的代码中看到的,他调用 Sum()。此外,他在命名空间中没有 $a$b 或类似的东西。
猜你喜欢
  • 2013-05-26
  • 2012-11-05
  • 2020-11-15
  • 2015-08-07
  • 2014-09-17
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多