1. 単純なデータ型の代入は値の転送であり、関数の戻り値の代入も値の転送です。また、PHP の参照では、「コピー オン ライト」の原則が採用されています。つまり、書き込み操作が発生しない限り、同じアドレスを指す変数やオブジェクトはコピーされません。
平たく言うと
1: 次のコードがあるとします
$a="ABC"; $b=$a;
実際、この時点では $a と $b は両方とも同じメモリ アドレスを指しており、$a と $b が異なるメモリを占有しているわけではありません
2: 上記のコードを元に、以下のコードを追加します
$a="EFG";
$a と $b が指すメモリ内のデータを書き換える必要があるため、このとき Zend コアが自動的に判断して自動的に$a を $b に生成します。 データをコピーし、ストレージ用のメモリを再適用します
2. オブジェクトの割り当ては参照によって行われ、メソッド定義と呼び出しの前に & 演算子を追加すると、参照としても渡されます。
function &test(){ static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; }}$a=test();//这条语句会输出 $b的值 为1 $a=5; $a=test();//这条语句会输出 $b的值 为2$a=&test();//这条语句会输出 $b的值 为3 $a=5; $a=test();//这条语句会输出 $b的值 为6
3. global キーワードを使用する場合 変数を宣言すると、実際にはグローバル変数への参照が作成されます。つまり、次の 2 行の結果は同じです:
global $val;$var =& $GLOBALS["var"];/*当用unset($val)取消引用时,只是断开了变量名$var和 变量内容 之间的绑定,并不会销毁全局变量$GLOBALS["var"]*/