PHP のアドレス参照と C 言語のポインタには違いがあります。 C言語におけるポインタは、メモリ上で変数の内容を格納するアドレスを格納します。
ナンセンスな話はやめて、まず例を見てみましょう。
$a = " ABC " ;
$b =& $a ; // ここに出力します: ABC
echo $b ; // ここに出力: ABC
$b = " EFG " ;
echo $a ; // ここの $a の値が EFG になるので、EFG が出力されます
echo $b ; >
上記の例は誰もが理解しているので、これ以上は言いません。では、次の例はどうでしょうか?
php
$b =& $a ;echo $b ; // ABC
;
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけであることがわかります。これは、変数の内容が破壊されることを意味するものではありません。
//ここでまたちょっとしたエピソードです
PHP におけるアドレスのポインティング (ポインタに似た) 関数は、ユーザー自身によって実装されるのではなく、Zend コアによって実装されます。PHP における参照は、「コピーオン」の原則を採用しています。 -write"。つまり、書き込み操作が発生しない限り、同じアドレスを指す変数またはオブジェクトはコピーされません。
php
$a = " ABC " ;
; 実際には、$a と $ の両方がb はこの時点では $a と $b が異なるメモリを占有するのではなく、同じメモリアドレスを指します
$a = "
" ; $a $b が指すメモリ内のデータを書き換える必要があるため、この時点で、Zend コアは $b 用の $a のデータ コピーを自動的に決定し、メモリの一部に再適用します。保管用