ホームページ > バックエンド開発 > PHPチュートリアル > PHP 5.6 変数スコープ: static キーワードを使用して静的変数を定義する方法

PHP 5.6 変数スコープ: static キーワードを使用して静的変数を定義する方法

王林
リリース: 2023-07-31 11:42:02
オリジナル
1395 人が閲覧しました

PHP 5.6 変数のスコープ: static キーワードを使用して静的変数を定義する方法

PHP では、変数のスコープによって変数の可視性とアクセス スコープが決まります。静的変数は、関数呼び出し間で値を変更しない特殊なタイプの変数です。 PHP 5.6 以降では、static キーワードを使用して関数およびクラス メソッド内で静的変数を定義できます。

静的変数の特性は次のとおりです。

  1. 静的変数のスコープは、それが宣言されている関数またはメソッドに制限されます。
  2. 静的変数は、関数呼び出しまたはメソッド呼び出し間で永続性を維持します。つまり、変数の値は、異なる関数呼び出し間で変更されません。
  3. 静的変数は関数またはメソッド内で独立しており、各関数またはメソッドには独自の静的変数があります。

PHP 5.6 で static キーワードを使用して静的変数を定義する方法を示す例を次に示します。

function myFunction() {
    static $count = 0; // 定义静态变量$count并赋初值为0
    $count++; // 增加$count的值

    echo "函数调用次数: " . $count . "<br>";
}

// 调用myFunction函数多次
myFunction(); // 输出:函数调用次数: 1
myFunction(); // 输出:函数调用次数: 2
myFunction(); // 输出:函数调用次数: 3
ログイン後にコピー

上の例では、myFunction() A静的変数 $count は関数内で定義されており、初期値は 0 です。 myFunction() 関数が呼び出されるたびに、静的変数 $count の値が 1 ずつ増加し、その値がブラウザに出力されます。したがって、関数が呼び出されるたびに、出力結果は関数呼び出しの回数が増加します。

関数内に加えて、静的変数はクラス メソッドでも使用できます。以下は、静的変数を使用するクラス メソッドの例です。

class MyClass {
    public static function myMethod() {
        static $count = 0; // 在类方法中定义静态变量$count并赋初值为0
        $count++; // 增加$count的值

        echo "方法调用次数: " . $count . "<br>";
    }
}

// 调用myMethod方法多次
MyClass::myMethod(); // 输出:方法调用次数: 1
MyClass::myMethod(); // 输出:方法调用次数: 2
MyClass::myMethod(); // 输出:方法调用次数: 3
ログイン後にコピー

上の例では、クラス MyClass の静的メソッド myMethod() は、静的変数を定義します。内部変数 $count、初期値は 0 です。 myMethod() メソッドが呼び出されるたびに、静的変数 $count の値が 1 ずつ増加し、その値がブラウザに出力されます。したがって、メソッドが呼び出されるたびに、出力結果はメソッド呼び出しの増分数になります。

概要:
静的変数は、関数呼び出しまたはメソッド呼び出し間で値を変更しない特殊な変数です。 PHP 5.6 以降では、static キーワードを使用して関数およびメソッド内で静的変数を定義できます。静的変数のスコープは、それが宣言されている関数またはメソッドに制限されており、各関数またはメソッドには独自の静的変数があります。静的変数を使用して、異なる関数呼び出しまたはメソッド呼び出し間でデータを共有し、カウントやタイミングなどの関数を実装します。

以上がPHP 5.6 変数スコープ: static キーワードを使用して静的変数を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート