0

私は2つのphpファイルを持っています。

index.php:

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

temp.php:

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

0 ではなく 1 を出力したいのですが、$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 に答える