PHP5 では、オブジェクトのコピーは参照を通じて行われます。上記の列の $b=new a; $c=$b; は、実際には $b=new a; $c=&$b; と同等ですが、場合によってはオブジェクトを参照します。オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないことを望みます。この目的のために、プログラムが比較的大きい場合、PHP は __clone と呼ばれる特別なメソッドを定義します。 、同じオブジェクトを参照する 変数が多く、使用後にオブジェクトを手動でクリアしたい場合は、個人的には、「&」メソッドを使用してから、$var=null を使用してクリアすることをお勧めします。また、php5 では、メモリ容量を節約できるため、配列の転送には「&」メソッドを使用することをお勧めします。
参照解除
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。例:
コードは次のとおりです:
$b =& $a;
unset ($a);
$b の設定は解除されず、$a のみが解除されます。
グローバル参照
グローバル $var で変数を宣言すると、実際にはグローバル変数への参照が作成されます。つまり、これを行うのと同じです:
コードをコピーします コードは次のとおりです:
$var =& $GLOBALS["var"]
?> ;
これは、たとえば、unset $var はグローバル変数の設定を解除しません。
$this
オブジェクトのメソッドでは、$this は常にそれを呼び出すオブジェクトへの参照です。
//ここでまたちょっとしたエピソードです
PHP におけるアドレスのポインティング (ポインタに似た) 関数は、ユーザー自身が実装するのではなく、Zend コアによって実装されます。PHP の参照は「コピーオン」の原則を採用しています。 -write"。つまり、書き込み操作が発生しない限り、同じアドレスを指す変数またはオブジェクトはコピーされません。
簡単に言うと
1: 次のコードがあるとします
$a="ABC";
$b=$a;
実際、この時点では $a と $b は両方とも $ ではなく同じメモリ アドレスを指します。 aと$bは別のメモリを占有します
2: 上記のコードに次のコードを追加すると
$a="EFG";
このとき$aと$bが指すメモリのデータが書き換えられるので、 Zend コア $b 用の $a のデータ コピーを自動的に決定して生成し、ストレージ用のメモリを再適用します。
http://www.bkjia.com/PHPjc/320833.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/320833.html技術記事 PHP における参照の意味は、異なる名前が同じ変数の内容にアクセスすることです。これは、C 言語のポインターとは異なります。 C言語のポインタは変数の内容をメモリに保存します...