PHP関数の参照呼び出しに関連する問題
Jun 13, 2016 pm 12:07 PM
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

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Huawei Watch GT 5スマートウォッチが新機能を追加してアップデートされる

Samsung Galaxy Z Fold Special Edition、競合する名前が浮上、10月下旬に発売されることが判明

初見:次期 Anker Zolo 4 ポート 140W ディスプレイ付き充電器の開封ビデオが流出

HyperOS を搭載した新しい Xiaomi Mijia グラフェン オイル ヒーターが到着

Cybertruck FSD のレビューでは、素早いレーン切り替えと全画面視覚化が賞賛されています

Garmin、新しいアップデートにより複数のスマートウォッチ向けの Adventure Racing アクティビティの改善をリリース

Manjaro 24.1「Xahea」は、KDE Plasma 6.1.5、VirtualBox 7.1 などとともに起動します
