PHPカスタム関数の静的変数LOGIN

PHPカスタム関数の静的変数

関数が何回呼び出されたかを知りたい場合はどうすればよいですか?静的変数を学ばなければ、それを解決する良い方法はありません。

静的変数の特徴は次のとおりです: 静的変数を宣言し、関数が 2 回目に呼び出されるとき、静的変数は変数を再度初期化せず、元の値に基づいて読み取って実行します。

この機能を使用すると、最初の質問を実現できます:
関数呼び出しワード数の統計。

まず、demo() 関数を 10 回実行してから、test() 関数を 10 回実行してみます。

<?php
function demo()
{
   $a = 0;
   echo $a;
   $a++;
}



function test()
{
   static $a = 0;
   echo $a;
   $a++;
}


demo();
demo();
demo();
demo();
demo();
demo();
demo();
demo();
demo();
demo();

/*
for($i = 0 ;$i < 10 ; $i++){
   test();
}
*/
?>

上記の例では、次のことがわかります。
test(); の場合、値は 1 ずつ増加します。 1 回実行すると、デモ出力が表示されます。表示される結果は常に 0 です。

上記の例を通して、この記事の冒頭で説明した静的変数の特性がわかります。


次のセクション
<?php //--------------如何理解static静态变量----------- /** 普通局部变量 */ function local() { $loc = 0; //这样,如果直接不给初值0是错误的。 ++$loc; echo $loc . '<br>'; } local(); //1 local(); //1 local(); //1 echo '===================================<br/>'; /** static静态局部变量 */ function static_local() { static $local = 0 ; //此处可以不赋0值 $local++; echo $local . '<br>'; } static_local(); //1 static_local(); //2 static_local(); //3 //echo $local; 注意虽然静态变量,但是它仍然是局部的,在外不能直接访问的。 echo '=======================================<br>'; /** static静态全局变量(实际上:全局变量本身就是静态存储方式,所有的全局变量都是静态变量) */ function static_global() { global $glo; //此处,可以不赋值0,当然赋值0,后每次调用时其值都为0,每次调用函数得到的值都会是1,但是不能想当然的写上"static"加以修饰,那样是错误的. $glo++; echo $glo . '<br>'; } static_global(); //1 static_global(); //2 static_global(); //3 ?>
コースウェア