PHP参照(&)

何引用されます

         PHPで引用は、異なる名前で同じ変数コンテンツにアクセスすることを意味します。これはCのポインタのようではない:あなたがそれらの上にポインタ演算を行うことはできません例えば、彼らは実際のメモリアドレスではありません。代替として、符号テーブルエイリアス。PHPで、変数名と変数の内容が同じではないので、同じ内容が異なる名前を持つことができることに注意してください。

何を引用

PHPの参照は、2つの変数が同じ内容を参照できるようになります。そうするとき、私は、意味します:

1 <?PHP
 2  
3  $ A =&$ B ;
4  
5?>

これは、同じ変数に$ aと$ b点は、$ Aはその逆$ Bまたはを指していないことを意味します。

未定義の変数を割り当て、参照パラメータを参照または参照を返している場合、自動的に作成された変数です。

1 <?PHP 
 2  関数のfoo(&$ VAR ){}
 3。 
4。 FOO($ A); // $ Aが作成され、nullに割り当てられている
。5  
。6  の$ B = 配列();
 7 FOO($ B [「B ' ]);
 8。 のvar_dumparray_key_exists(' B ' $のB)); // $ B [' B「]が真のBOOLを()が作成されている
9。 
10  $ C = 新しい新しいはstdClass;
 11。 FOO($のC - > D );
 12  のvar_dump(property_exists($ Cを、 'D')); // $ Cのdのプロパティを作成しますが(trueに)BOOLを返す
13は 
14 >?

あなたはforeach文で変数の代入への参照を持っている場合は、参照されるオブジェクトも変更されます。

1 <?PHP
 2  $ REF = 0 ;
 3。 $行 =&$ REF ;
 4。 foreachの配列(1,2 ,. 3)。AS  $行){
 5。     // 操作を実行
6。 }
 7。 エコー の$ REF ; // 3 - 。配列の最後の要素の繰り返し
8?>
 

リファレンスの第2は、参照することにより、変数を渡すことです。これは、関数内のローカル変数を設定することによって行われ、変数が達成するために呼び出した範囲で同じコンテンツを参照してください。

1 <?PHP
 2  関数のfoo(&$のVAR 3  {
 4      $するvar ++ 5  }
 6  
7  の$ A = 5 8のfoo($ A )。
9?>

 6 $になります。関数内で変数$ varは$のと同じ内容を指しfooのためです。

 

リファレンスが行う第三のものは、参照することによってリターンです。

 

 

参照渡し

唯一の関数定義がある - 関数コールサインで何の言及がないことに注意してください。機能が正しく参照によって渡されたパラメータによって定義されていることだけで十分。

以下は、参照によって渡すことができます。

  • などの変数、  FOO($ A)
  • 以下のような新しい文、  FOO(新しいfoob​​arに())
  • 例えば、関数からの参照を返します。

1 <?PHP
 2  関数バー()
 3  {
 4      $ A = 5 5      リターンは $ ;
6  }
 7  FOO(バール())。
8?>

他の式は、参照によって渡すことはできません、結果は未定義です。

 

リファレンスを返します

あなたは参照がどの変数に束縛されなければならない見つけるために関数を使用したいときに使用される参照を返します。しないエンジンが自分を最適化するのに十分なスマートで、パフォーマンスを向上させるために返します参照してください。合理的な技術的な理由がある場合にのみ参照を返すだけです!リファレンスを返すには、次の構文を使用します。

1 <?PHP
 2  クラスFOO {
 3      公共 $値 = 42 4  
5      パブリック 関数のgetValue(){
 6          戻り 、この$ - > 値。
7      }
 8  }
 9つの 
10  $ OBJ = 新しいFOO。
11  $ myValue =&$ OBJ - >のgetValue(); // $ myValue是对$ obj->値的引用、该值为42 
12  $ OBJ - >値= 2 ;
13  エコー の$ myValue;                 // プリント$ obj->値の割り当て、すなわち2 
14 >?

逆参照

ときに参照設定を解除、あなただけの変数名と変数の内容の結合を破ります。これは、変数の内容が破壊されることを意味するものではありません。例えば:

1 <?PHP
 2  の$ A = 1 ;
3  $ bの =&$ ;
4  設定を解除$ A )。
5?>

未設定の$ bのないであろう、ちょうど$。

参考文献をスポッティング

多くのPHPの文法構造は、メカニズムを参照することによって達成されるので、上記の参考文献は、関連するすべての結合はまた、これらの構造に適用されます。そのような参照渡しと返すなどの一部の構造は、上述されています。構造の使用その他の参考文献:

グローバル  参照

使用する場合は  グローバルの$ VARを  、あなたは変数が実際にグローバル変数への参照を作成します宣言します。それは、これが同じに行われます。

1 <?phpの
 2  $のVAR =&$ GLOBALS [ "VAR" ];
3?>

解除の$ varが未設定のグローバル変数ではないでしょう。

 

$この

メソッドオブジェクトでは、$これは常にそのオブジェクトの呼び出しです。

 

 

より多くの知識はphp.netに仕上げ

おすすめ

転載: www.cnblogs.com/guaiyouyisi/p/11684108.html