PHP 定数と変数の変数参照
変数リファレンス
変数リファレンス 多くの教師は、C 言語ポインタを使って説明することを好みます。長年の開発と教育の経験を持つ人として、PHP を学習する人のほとんどは C 言語をまったく理解していません。
C言語のポインタを使って変数参照を説明すれば十分だと思います。また、C 言語の基礎を持たない友人が学習するのは好ましくありません。
変数参照の知識点については、こちらの解説を参考にして理解してください!
2 つのコード部分の実行結果を比較してみましょう:
最初のコード部分には違いはありません。元の PHP コードとまったく同じです:
<?php $fo = 5; //$fo的值为5,将5赋值 $bar = $fo; //$bar的值原来为5,现在将值改为6 $bar = 6; //$bar的结果为6 echo $bar.'<br />'; //$fo的结果为5 echo $fo.'<br />'; ?>
コードの 2 番目の部分:
<?php $fo = 5; //注意,加上了一个&符哟 $bar = &$fo; $bar = 6; //$bar的结果为6 echo $bar.'<br />'; //$fo的结果为6 echo $fo.'<br />'; ?>
なぜ両方の結果が 6 になるのでしょうか?
私はよくこんな例を挙げます。これは次のように想像できます。変数名はデータ値に対応します。以下に示すように:
に & (and 記号の後に) を追加すると、以下に示すように、変数が同じ記憶域を指します:
つまり、$fo または $bar の値がどのようなものであっても、 $fo が変化すると、$bar も変化します。$bar が変化すると、$fo も変化します。
理解を助けるために、信頼性の低い例を挙げましょう:
あなたは家にワンツァイという名前の子犬を飼っています。ゴーダンという名前の子犬がもう1匹います。ある日、あなたは犬の卵を食べました。ゴーダンという名前はワンカイに付けられました
そうすると、ゴーダンを叩いてもワンカイを叩いても同じ犬を叩いていることになります。
注: C 言語のポインターを理解し、理解しており、精通している場合。ポインタを使用して自分で理解することもできますが、これについてはこの記事の範囲を超えています。