ホームページ >バックエンド開発 >PHPチュートリアル >PHP関数の参照呼び出しに関連する問題
PHP 関数の参照問題
function &test(){
static $b = 1;
$b = 2;
return $b; ;
$a =8;
$c = &test(); // ここで test() 関数が再度呼び出されますが、静的な $b = 1; が実行されなくなりました。結果は $c=10.
// static が削除された場合、結果は 3 であることを示しているためです。これはどう説明すればよいでしょうか?ありがとう!
echo $c;
-----解決策----------------------
static If変数 $b が変更されると、常に存在します。 static が削除されると、呼び出されるたびに初期化されます。 $a = &test(); (& を追加、アドレス転送) なので、 $ a が変更され、その後静的 変数 $b の値も変更されるため、$c = &test(); が実行されると、$b の値は 8 になり、10 が返されます
- -----解決案- ----------
静的変数には宣言時にのみ初期値が代入されます。グローバル変数のプロパティですが、スコープが異なります-----解決策----------------------
静的変数は関数のスコープ内にのみ存在します。つまり、静的変数はスタック上にのみ存在します。一般に、関数内の変数 (ローカル変数など) は関数の終了後に解放されますが、静的変数は解放されません。つまり、変数の値は次回この関数が呼び出されたときに保持されます。 ------解決策----------------------
静的変数には、次の場合にのみ初期値が割り当てられます。これらは宣言された値であり、静的変数はグローバル変数のプロパティを持ちますが、スコープが異なります 1