まず代入演算子 = の動作を説明します。次の例を見てください:
コードをコピーします コードは次のとおりです:
$i = 0;
$j = 0; ;
echo $ j; //出力 0 を出力します
$arr2 = $arr; //出力 0 を出力します
クラス B
{
public $i = 0;
$b = new B()
$c->i = 1; // 出力 1
この例から、= 演算子の右側の変数が基本データ型または配列の場合、= 演算子は右側の変数のコピーを左側の変数; 右側の変数がクラスなどの基本的なデータ型または配列でない場合、 = は右側の変数への参照を左側の変数に割り当てます。注: これは、右側の変数が指すコンテンツ領域ではなく、右側の変数への参照です。詳細については、以下の例を参照してください
コードをコピーします
$a = new A(); $b_r = &$a; var_dump($a); $a が指す内容はまだ存在します$b_r = null; var_dump($a); // null を出力すると、$a が指す内容はクリアされます
$var = を使用すると、 &$a に値を割り当てるには、$var= を使用します。null を使用して変数 $var を破棄すると、実際には、$var が指す内容が null に設定されます。コンテンツ領域を使用して、コンテンツ領域のコンテンツを破棄できます。したがって、変数 $var を破棄するには、unset($var) を使用します。 PS: 実際、この方法で $var を割り当てることは単なる参照であり、破棄されるかどうかは関係ありません。これは、設定を解除することで破棄する必要があることを意味します。
以下は「ユーザーマニュアル」の「引用の説明」の例です:
$a =& $b;
以下の説明があります:
これは、$a と $b が同じ変数を指すことを意味します。
注: ここで $a と $b はまったく同じです。$a が $b を指しているわけではなく、$a と $b が同じ場所を指しているということです。
引用とは何ですか?
「参照とは何か」について少し説明します: int i = 0; int j = 0; int *p = &i;
p = &j; i はアドレスのポインタ、*p は内容です。p=&j は p のポインタを変更することを示し、*p=111 の式は i の内容を変更します。 PHP ではこれは当てはまりません。次の例では、$p = &$i;
$p = 111 が $i の値を変更します。