web-dev-qa-db-ja.com

PHPの参照代入演算子、=

=&(等アンパサンド)代入演算子はPHPで実行しますか?

非推奨ですか?

89
Kyle J. Dye

非推奨ではありません。たとえば、既存のデータをコピーする代わりに、ある配列の一部を作成したり、別の配列に加えられたオブジェクトミラーの変更を行う標準的な方法です。

これは参照による割り当てと呼ばれ、マニュアルを引用すると "両方の変数が同じデータを指すことになり、何もコピーされないことを意味します"

is=&で非推奨となったのは、 PHP 5 の「参照によるnewの結果の割り当て」だけです。これは混乱の原因になる可能性があります。 newは参照によって自動的に割り当てられるため、&はin$o = &new C;で冗長/非推奨になりますが、$o = &$c;では不要です。


検索が難しいので、=&等しいアンパサンド)は= &等しいスペースアンパサンド)と同じであり、しばしば$x = &$y['z'];のような他の変数に実行されるように書かれていることに注意してください$x = &$someVarアンパサンドドル記号変数名)。ドキュメントから簡略化された例:

$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4

PHPマニュアルの_(参照による割り当ての詳細なセクション への便利なリンクです。そのページは、参照に関するシリーズの一部です。シリーズ。

107
user568458

2つの異なる演算子です。 =は、ご存じのとおり割り当てです。そして&は、値ではなく参照によって変数にアクセスする必要があることを意味します。

25
Asaph
$x = &$y['z'];

$y['z']が存在しない場合は作成し、nullに設定する効果もあります。

これにより、読みたいエラーメッセージを防ぐことができます。これに関するドキュメントはまだ見つかりません。私が知っている限りでは、おそらく5.3の新機能です。

5
malcanso