ホームページ  >  記事  >  バックエンド開発  >  誰か説明してくれませんか? 「&」の引用について

誰か説明してくれませんか? 「&」の引用について

WBOY
WBOYオリジナル
2016-06-23 13:50:00993ブラウズ

class Test {	protected $var = null;	function __construct(&$var) {		$var['z']=2;		$this->var = &$var;		$this->var['xx']=2;	}}$x=['b'=>2];$d=new Test($x);print_r($x);


上記のコードが $this->var = &$var を $this->var = $var
に変更すると、文 xx=2 は有効になりません。 $var はすでに参照ではありませんか?


ディスカッションに返信(解決策)

変更したのは $this->var ですが、コンストラクターの一時変数 $var を参照しているため
なので、$x は変更されません
$this->var[ 'xx ']=2; 次に、 $var['xx'] = 2; に変更します

変更したのは $this->var ですが、これはコンストラクター
の一時変数 $var を参照しています。そのままです
$ this->var['xx']=2; 次に $var['xx'] = 2; に変更します



何を言っているのかよくわかりません。 $this->var は外部変数 $x の参照を参照していませんか?構築では (&$var) が使用されているため、この $var が参照になります。そして、この参照をクラス内の var に与えます

何か問題はありますか?正常です、参照アドレスです。

class Test {    protected $var = null;    function __construct(&$var) {        $var['z']=2;        $this->var = &$var;        $this->var['xx']=2;    }}  $x=array('b'=>2);$d=new Test($x);print_r($x);


配列
(
[b] => 2
[z] => 2
[xx] => 2
)

$x = array('b'= >2);
$a =& $x; //$a は $x への参照
$a['a'] = 'a'; //$a への変更は $x に影響します
$b = $a; /$b は $a への参照ではありません
$b['b'] = 'b'; //したがって、$b への変更は $a には影響せず、ましてや $x には渡されません
print_r($x) ;

http://www.cnblogs.com/thinksasa/p/3334492.html
見ればわかります

$this->var = $var; は参照ではありません。 var bemodified?$var
$this->var = &$var; は参照です、$this->varmodified?$var

意味がよくわかりません。 $this->var は外部変数 $x の参照を参照していませんか?構築では (&$var) が使用されているため、この $var が参照になります。そして、この参照をクラス内の var に与えます



質問の意味は理解できたようです
$b が $a を参照する場合、$b が再度参照されない場合は、$b を使用して $c に値を割り当てます。 $c 得られるのは、やはり新しく作成されたメモリ データです。$c に $a を参照させたい場合は、$c = &$b



意味がよくわかりません。 $this->var は外部変数 $x の参照を参照していませんか?構築では (&$var) が使用されているため、この $var が参照になります。そして、この参照をクラス内の var に与えます



質問の意味は理解できたようです
$b が $a を参照する場合、$b が再度参照されない場合は、$b を使用して $c に値を割り当てます。 $c 得られるものはまだ新しいメモリデータです。 $c に $a を参照させたい場合は、 $c = &$b

マニュアルを読むと、php の & と & の & が異なるようです。 C言語は全く同じ概念ではありません。

PHP リファレンスと C 言語ポインターはもちろん同じものではありません
しかし、メイン投稿のコードのパフォーマンスは、同等の C コードのパフォーマンスと同じです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。