ホームページ  >  記事  >  バックエンド開発  >  PHPアドレス参照

PHPアドレス参照

WBOY
WBOYオリジナル
2016-06-23 14:31:471417ブラウズ

PHP のアドレス参照と C 言語のポインタには違いがあります。 C言語におけるポインタは、メモリ上で変数の内容を格納するアドレスを格納します。
ナンセンスな話はやめて、まず例を見てみましょう。

$a = " ABC " ;
$b =& $a ; // ここに出力します: ABC
echo $b ; // ここに出力: ABC
$b = " EFG " ;
echo $a ; // ここの $a の値が EFG になるので、EFG が出力されます
echo $b ; >


上記の例は誰もが理解しているので、これ以上は言いません。では、次の例はどうでしょうか?

$b =& $a ;

echo $b ; // ABC



;
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけであることがわかります。これは、変数の内容が破壊されることを意味するものではありません。

//ここでまたちょっとしたエピソードです
​​ PHP におけるアドレスのポインティング (ポインタに似た) 関数は、ユーザー自身によって実装されるのではなく、Zend コアによって実装されます。PHP における参照は、「コピーオン」の原則を採用しています。 -write"。つまり、書き込み操作が発生しない限り、同じアドレスを指す変数またはオブジェクトはコピーされません。

次のようなコードがあるとします

$a = " ABC " ;



; 実際には、$a と $ の両方がb はこの時点では $a と $b が異なるメモリを占有するのではなく、同じメモリアドレスを指します

2: 上記のコードに次のコードを追加すると


$a = "

" ; $a $b が指すメモリ内のデータを書き換える必要があるため、この時点で、Zend コアは $b 用の $a のデータ コピーを自動的に決定し、メモリの一部に再適用します。保管用

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。