ホームページ > バックエンド開発 > PHPチュートリアル > PHP関数の参照呼び出しに関連する問題

PHP関数の参照呼び出しに関連する問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 12:07:57
オリジナル
971 人が閲覧しました

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

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