参考: メモリ内の元のオブジェクトのアドレスをターゲット オブジェクトに渡すことを意味します。これは、元のオブジェクトとターゲット オブジェクトが同じメモリ アドレスを指すことに相当します。このとき、対象のオブジェクトや元のオブジェクトを変更すると、メモリ内のデータも変更されます。
いわゆる値の転送は、オブジェクトの値をターゲット オブジェクトに渡すことだけがコピーと同等であることを意味し、システムはターゲット オブジェクトに対して同一のメモリ空間を再度開きます。
いわゆる参照とは、メモリ上のオブジェクトのアドレスを対象オブジェクトに渡すことを意味し、これは対象オブジェクトと元のオブジェクトを同じメモリ記憶空間に対応させることと等価です。このとき、対象オブジェクトを変更するとメモリ上のデータも変更されます。
値を渡す場合、それがオブジェクトでない場合は、その値のコピーが渡され、この変数を変更しても元の値には影響しません。参照またはオブジェクトを渡すということは、この変数への変更が元の値に影響を与えることを意味します。
コードは次のとおりです | コードをコピー |
関数 func1($a) { $a = $a + 1 } 関数 func2(&$a) { $a = $a + 1 } $サンプル = 1; func1($sample); echo $sample // 出力 1 $サンプル = 1; func2($sample); 9.echo $sample // 出力 2 |
まとめ
高校の時、先生は、変数にメモリアドレスを与えることだと教えてくれました。メモリアドレスが変わると、考慮される変数の内容も変わります。これは、家のようなものです。物が置かれ、私たちは部屋に入ってそれを手に入れることができます。このように、部屋に物がある場合、私が手に持っているのではなく、入ったときに見えるものは同じです。変化しても、ここにあるものは変わりません。