PHP4 および PHP5 の参照 &
この記事は重慶 PHP からの転載です。元のアドレス: http://www.php-chongqing.com/index.php/article/104
PHP は参照演算子 (&) を提供します。PHP での参照とは、別の演算子を使用することを意味します。名前は同じ変数の内容にアクセスしますが、PHP4 と PHP5 のオブジェクト参照には違いがあります。
$a = 8;
$b = $a;
echo '$a:' . $a; // 8
echo '$b:' . $b; // 8
$a = 12;
echo '$a:' . $a; // 12
echo '$b:' . $b; // 8
ログイン後にコピー
まず変数 $a を作成し、整数 8 を $a に代入し、次に $a を $b に代入します。このとき、PHP は $a のコピーを作成し、このコピーを代入します。平たく言えば、メモリ内に 2 つの変数が生成され、変数の値は両方とも 8 です。これら 2 つの変数の 1 つは $a を指し、もう 1 つは $b を指すので、出力された結果は$a と $b は両方とも 12 なので、12 Assign を $a に変更し、$a と $b を出力すると、$a の値は 12 になりますが、$b の値は 8 のままであることがわかります。 $a と $b は関連する変数がまったく異なるため、これは簡単に理解できます。
$a = 8;
$b &= $a;
echo '$a:' . $a; // 8
echo '$b:' . $b; // 8
$a = 12;
echo '$a:' . $a; // 12
echo '$b:' . $b; // 12
ログイン後にコピー
まず変数 $a を作成し、整数 8 を $a に代入し、次に $a を $b に代入します。& 参照代入が使用されていることに注意してください。 $a を出力します。と $b の場合、両方の変数は 8 です。次に $a に 12 を代入し、$a と $b を出力すると、$b の値も 12 になっていることがわかります。 PHP の参照演算子 (&) は、プログラムがコピーを作成するのを防ぎます。$a と $b は同じメモリ領域を指します。つまり、$a と $b は同じ変数であるため、$a の値が変更されると、$それに応じて b の値も変化します。これは、彼が学生時代に彼を「サンワ」と呼んでいたようなもので、「チャンサン」または「サンワ」はどちらも同じ人物を指します。
PHP4 では、オブジェクトを作成して別の変数に割り当てると、PHP4 は常にオブジェクトのコピーを作成し、オブジェクト全体とそのすべての内容をコピーします。 PHP4 のこのオブジェクト処理方法は非常に不適切で、オブジェクトをコピーすると、プログラムがより多くのメモリを消費し、不可解なエラーが発生することがよくあります。この不適切なオブジェクト処理方法は PHP5 では改善され、オブジェクトは常に参照によって渡されます。
$user = new User();
$user->name = 'zhangsan';
$bing = $user;
$bing->name = 'bing.peng';
echo $user->name; // For PHP4: zhangsan For PHP5: bing.peng
ログイン後にコピー
PHP4 で上記のコードを実行すると、出力される結果は次のようになります: 'zhangsan'; PHP5 で出力される結果は次のようになります: PHP5 はデフォルトで参照割り当てを使用することがわかります。注: PHP5 は、デフォルトではオブジェクト型に対してのみ参照割り当てを使用します。PHP5 でオブジェクトをコピーするには、PHP4 で同じ効果を得るには、 clone キーワードを使用する必要があります。参照演算子、コードは次のとおりです:
$user = new User();
$user->name = 'zhangsan';
$bing &= $user;
$bing->name = 'bing.peng';
echo $user->name;
ログイン後にコピー