115

=&(equals-ampersand)代入演算子はPHPで何をしますか?

非推奨ですか?

4

5 に答える 5

137

非推奨ではなく、そうなる可能性は低いです。これは、たとえば、既存のデータをコピーする代わりに、ある配列の一部を作成したり、別の配列に加えられた変更をミラーリングしたりする標準的な方法です。

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

非推奨になっているのは、 PHP 5の「参照による=&結果の代入」だけであり、これが混乱の元になる可能性があります。は参照によって自動的に割り当てられるため、では冗長/非推奨ですが、 ではそうではありません。newnew&$o = &new C;$o = &$c;


検索しにくいので、=&( equals ampersand ) は= &( equals space ampersand$x = &$y['z']; ) と同じであり、 or $x = &$someVar( ampersand ドル記号 variable name )のように他の変数にぶつかるように書かれることが多いことに注意してください。ドキュメントから簡略化した例:

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

PHP マニュアルの参照による割り当てに関する詳細なセクションへの便利なリンクを次に示します。このページは参考文献に関するシリーズの一部です。シリーズ全体を読むのに少し時間をかける価値があります。

于 2011-11-17T22:11:57.973 に答える
26

それは2つの異なるオペレーターです。=おそらくご存知のように、割り当てです。And&は、値ではなく参照によって変数にアクセスする必要があることを意味します。

于 2009-11-20T04:32:06.840 に答える
8
$x = &$y['z'];

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

これにより、読みたかったエラー メッセージが表示されなくなります。これに関するドキュメントはまだ見つかりません。私が知っている限りでは、5.3 で新しくなった可能性があります。

于 2013-09-23T22:31:01.650 に答える