ホームページ  >  記事  >  バックエンド開発  >  PHPでの静的変数の使い方、ローカル静的変数とグローバル静的変数の違いを詳しく解説

PHPでの静的変数の使い方、ローカル静的変数とグローバル静的変数の違いを詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-06-30 11:23:091591ブラウズ

静的変数関数スコープ内にのみ存在します。次回この関数が呼び出されるとき、変数の値は保持されます

静的変数は関数スコープ内にのみ存在します。スコープ内では、静的変数はスタック上にのみ存在します。一般に、関数内の変数 (ローカル変数など) は関数の終了後に解放されますが、静的変数は解放されません。次回この関数が呼び出されるとき、変数の値は保持されます。


静的変数の基本的な使い方

1. クラス内で静的変数を定義する
【アクセス修飾子】
static $変数名2. 静的変数にアクセスする方法; self::$static変数名、クラス名::$static変数名
クラス外からアクセスする場合:クラス名::$static変数名というメソッドがある


class Child{ 
public $name; 
//这里定义并初始化一个静态变量 $nums 
public static $nums=0; 
function construct($name){ 
$this->name=$name; 
} 
public function join_game(){ 
//self::$nums 使用静态变量 
self::$nums+=1; 
echo $this->name."加入堆雪人游戏"; 
} 


}

//创建三个小孩 

$child1=new Child("李逵"); 
$child1->join_game(); 
$child2=new Child("张飞"); 
$child2->join_game(); 
$child3=new Child("唐僧"); 
$child3->join_game(); 

//看看有多少人玩游戏 
echo "<br/> 有这".Child::$nums;

静的ローカル変数の特徴:


1 .関数が呼び出されて

終了

しても変化しませんが、変数は存在し続けますが、使用することはできません。それを定義する関数が再度呼び出された場合、その関数は引き続き使用でき、前の呼び出し後に残った値は保存されます2. 静的ローカル変数は 1 回のみ初期化されます3. 静的
プロパティ
は次のように初期化されます。 one では文字値や定数を使用できません。ローカル静的変数が初期値なしで定義されている場合でも、システムは自動的に初期値 0 (数値変数の場合) または null 文字 (文字変数の場合) を割り当てます。静的変数の初期値は 0 です。 4. 関数が複数回呼び出され、呼び出し間で特定の変数の値を保持する必要がある場合は、静的ローカル変数を検討できます。グローバル変数を使用して上記の目的を達成することもできますが、グローバル変数は予期しない副作用を引き起こす場合があるため、ローカル静的変数を使用することをお勧めします。

function test()
{
    static $var = 5;  //static $var = 1+1;就会报错
    $var++;
    echo $var . &#39; &#39;;
}
 
test(); //2
test(); //3
test(); //4
echo $var; //报错:Notice: Undefined variable: var

静的グローバル変数について:

//全局变量本身就是静态存储方式,所有的全局变量都是静态变量
function static_global(){
    global $glo;
    $glo++;
    echo $glo.&#39;<br>&#39;;
}
static_global(); //1
static_global(); //2
static_global(); //3
echo $glo . &#39;<br>&#39;; //3


以上がPHPでの静的変数の使い方、ローカル静的変数とグローバル静的変数の違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。