ホームページ >バックエンド開発 >PHPチュートリアル >PHP 変数のスコープとアドレス参照の問題の分析
注: static $b=0 この代入操作は、変数が初めて初期化されるときにのみ実行されます。 付録 A: クラス内の静的メンバーと静的メソッドは、ほとんどの場合、呼び出し時にクラス名または self または親に :xxx を加えたものを使用しますが、その宣言はメソッドの外にあります。 付録 B: js のスコープは次のとおりです: use var aa=‘xxx’; 関数の外で宣言されるものはグローバル変数です (修飾子 var の有無に関係なく)。ローカル変数は関数内で var を使用して宣言され、グローバル変数は var を使用せずに宣言されます。 付録 C: PHP リファレンスについて PHP リファレンス: 変数、関数、またはオブジェクトの前に &. リファレンスを追加すると、同じ変数の内容に別の名前でアクセスできます。 1. 変数の参照:
2.機能の
3.
分析: $a=test() を使用して取得するものは、実際には関数から返される参照ではありません。 $b には影響せずに、関数の戻り値を $a にコピーするだけです。この通話は通常の通話と変わりません。 Php では、 $a=&test() メソッドは関数の参照を返すと規定されています。彼は、$b 変数のメモリ アドレスと $a 変数のメモリ アドレスが同じ場所を指しました。これは $a=&$b; と同等です4. 参照をキャンセルする
分析: 参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけで、内容が破棄され、その値がまだ存在するという意味ではありません。 5. グローバルな引用: global $var を使用して変数を宣言すると、実際にはグローバル変数への参照が作成されます。
$a = 1; $b =$a; $a と $b はどちらも同じメモリ アドレスを指します。$a と $b が異なるメモリを占有するわけではありません。 ここで $a="dsd" という文を実行すると、$a と $b が指すメモリ データを書き換える必要があると、この時点で zend コアが自動的に判断します。 $b 用の $a のデータ コピーを自動的に生成し、ストレージ用のメモリを再適用します。PHP 変数スコープと PHP リファレンスについては以上です。皆さんのお役に立てれば幸いです。 |