PHP 变量跨require_once和函数



我有 2 个 php 文件。

索引.php:

<?php
    $counter = 0;
    require_once('temp.php');
    temp();
    echo $counter;
?>

温度.php:

<?php
    function temp() {
            tempHelper();
    }
    function tempHelper() {
            $counter++;
    }
?>

我想打印 1 而不是 0。我试图$counter设置为全局变量,但没有成功。

我能做什么?

您的tempHelper函数正在递增局部$counter变量,而不是全局变量。您必须通过两个函数通过引用传入变量,或者使用全局变量:

function tempHelper() {
  global $counter;
  $counter++;
}

请注意,对全局变量的依赖可能表示应用程序中存在设计缺陷。

我建议不要使用全局变量。为计数器使用类可能会更好。

class Counter {
    public $counter;
    public function __construct($initial=0) {
        $this->counter = $initial;
    }
    public function increment() {
        $this->counter++;
    }
}

或者只是使用没有函数的变量。您的函数似乎是多余的,因为键入$counter++就像键入函数名称一样容易。

我想这应该有效:

<?php
    $counter = 0;
    function temp() {
            // global $counter; [edited, no need for that line]
            tempHelper();
    }
    function tempHelper() {
            global $counter;
            $counter++;
    }
    temp();
    echo $counter;
?>

或者,您可以将变量作为参数传递,或从该函数返回新值。

更多信息请访问 http://www.simplemachines.org/community/index.php?topic=1602.0

相关内容

  • 没有找到相关文章

最新更新