0

我有 2 个 php 文件。

索引.php:

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

临时文件:

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

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

我能做些什么?

4

3 回答 3

2

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

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

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

于 2012-07-03T11:01:51.090 回答
1

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

class Counter {
    public $counter;

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

    public function increment() {
        $this->counter++;
    }

}

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

于 2012-07-03T11:04:22.687 回答
0

我想这应该有效:

<?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

于 2012-07-03T11:09:12.967 回答