PHPでは、文字列、整数、浮動小数点、配列などのほとんどの変数型は値型です型は参照型ですが、クラスとオブジェクトは参照型であるため、使用する際にはこの点に注意する必要があります。
ネチズンが PHP の & シンボルについて議論しているのを見ました。その使用法を完全に理解するには、変数の 2 つの形式について議論する必要があります。
PHP 変数はこのようにメモリに保存されます。変数が保存するのは値の内容ではなく、アドレスです。例:
リーリー変数 $a には値 1 が直接格納されているように見えます。実際の状況では、PHP インタープリターは変数 $a を作成し、値 1 をメモリのどこかに保存し、その値のアドレスを変数 $a に保存します。
値を取得する必要がある場合は、まず変数 $a のアドレスを見つけてから、そのアドレスに基づいて変数の値を見つけます。
以下をご覧ください:
リーリーは 1 を出力します。PHP インタープリタは、このコードを次のように完成させます。$a に格納されているアドレスを見つけ、そのアドレスに基づいてメモリのどこかに格納されている値を見つけ、それを画面に出力します。
単純なコードのように見えますが、プロセスは次のとおりです。
さらに下を見てください:
リーリーここでの変数 $b は興味深い操作を行います。& 記号は、$a 変数に格納されているアドレスを取り出し、それを $b 変数に格納します。
したがって、次のコードを使用すると:
リーリー結果も出力されます 1. PHP インタープリターは、まず $b に格納されているアドレスを取り出し、次にそのアドレスに基づいて値を見つけます。次のようにすると:
リーリー$a の値が変更されると、$b も変更されることがわかります。実際には、逆に、$b の値が変更されると、それに応じて $a の値も変更されます。
このステップでは、変数 $a と $b が同じアドレスを格納し、同じ値を指していることを確認できます。
そして、それらは同じ変数を表していると結論付けることができます。
さらに要約すると、2 つの変数が同じアドレスを格納している場合、それらは同じ変数であると結論付けることができます。
いくつかの内容を理解した後、値の型と参照型の紹介を開始します。
まず次のコードを見てみましょう:
リーリー$a の値を $b に代入します。$a の値を変更した後、$b の値は変更されません。つまり、$a と $b は、異なるアドレスを指す 2 つの異なる変数です。さまざまな変数を作成するこの形式の代入は、値型と呼ばれます。
もう一度見てください:
リーリー同様に、$a の値を $b に代入します。$a を変更すると、$b も変更されます。つまり、$a と $b は同じ変数であり、同じアドレスを指します。新しい変数を作成しないこの形式の代入は、参照型と呼ばれます。