これはW3Schoolsで見ました。関数が呼び出されるたびに、変数xが再び0になるので関数内の静的変数
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
出力は0、1、2 それが0ではない、なぜかしら、0および0.1 あります。
私はPHPの初心者です。ありがとう!
これはW3Schoolsで見ました。関数が呼び出されるたびに、変数xが再び0になるので関数内の静的変数
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
出力は0、1、2 それが0ではない、なぜかしら、0および0.1 あります。
私はPHPの初心者です。ありがとう!
関数内でvar staticを宣言すると、varは複数の呼び出しで値を保持します。クラスの静的なvar内部と比較することができます。
投稿したコードは、実際の効果を確認するのに良い例です。しかし、私は静的な内部関数を注意深く使用しています。ほとんどの場合、静的な値が必要です。値をリセットするか、多くのロジックを必要とし、コードが本当に悪くなります。
良い例は、特定の識別子に固有の識別子を返す関数です。これは、このコードを使用することで簡単に達成できます。
function unique_id($id) {
static $count = 0;
return $id . ($id++);
}
この例では明確になる場合があります。 スタティックは、スコープを持ちます。したがって、グローバル変数ではありません。だから私は静的な$ xを関数の外に定義することができ、そこに定義されます。 staticにスコープがあるので、$ x = 0の実行とリセットを続けるのは意味をなさないでしょう。したがって、phpはその行が初めて呼び出されたときにだけそれを認識します。
<?php
static $x = 1000;
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
この関数を呼び出すたびに、$ xをゼロ(0)にリセットするためです。 – Rick
ええ、なぜ出力が0,1,2? –
'static'は、関数が最初に呼び出されたときにのみ宣言されます。後続の呼び出しごとに記憶されます。これは関数スコープで 'static'がどのように機能するかです。 PHPは基本的にC言語に根ざしていることを思い出させるものです – apokryfos