PHP で引用されている意味は、異なる名前が同じ変数の内容にアクセスすることです。 PHPC言語のポインタには違いがあります。 C言語におけるポインタは、メモリ上で変数の内容を格納するアドレスを格納します。 php を見てみましょう引用符 (&) の使用法
変数リファレンスPHP のリファレンスでは、2 つの変数を使用して同じコンテンツを指すことができます。
<?php $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG ?>
参照による呼び出し関数の詳細については説明しません。コードはすぐ下にあります。
function test(&$a) { $a=$a+100; } $b=1; echo $b;//输出1 test($b); //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了 echo "<br>"; echo $b;//输出101
関数の参照戻り
まずはコードを見てください
function &test() { static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } $a=test();//这条语句会输出 $b的值 为1 $a=5; $a=test();//这条语句会输出 $b的值 为2 $a=&test();//这条语句会输出 $b的值 为3 $a=5; $a=test();//这条语句会输出 $b的值 为6
PHPでは$a=で得られるものと規定されています。 &test(); は関数の参照 return です
参照リターンとは何ですか? (PHP マニュアルには、参照をバインドする必要がある関数を使用する場合に参照リターンが使用されます)。長い間理解できませんでした
上の例を使って説明してください
$a=test() で関数を呼び出すと、関数の値が $a に代入されるだけで、$a を変更しても $ には影響しません関数内の b
そして $a=&test() で関数を呼び出します。その機能は、$b を返す $b 変数のメモリ アドレスと、$a 変数のメモリ アドレスを同じ場所に指すことです。これと同等の効果が得られます($a=&b;) そこで、$aを変更します $bの値も$bの値を変更しますので、
$a=&test(); $a=5;
<?php
class a{
var $abc="ABC";
}
$b=new a;
$c=$b;
echo $b->abc;//这里输出ABC
echo $c->abc;//这里输出ABC
$b->abc="DEF";
echo $c->abc;//这里输出DEF
?>
PHP5 のデフォルトでは、オブジェクトを参照によって呼び出すことができます。オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないことを望みます。この目的のために、PHP はクローンと呼ばれる特別なメソッドを定義します。プログラムが比較的大きい場合は、比較します。同じオブジェクトを参照する変数 使用後にオブジェクトを手動でクリアしたい場合は、「&」メソッドを使用してから、$var=null を使用してオブジェクトをクリアすることをお勧めします。それ以外の場合は、php5 のデフォルトのメソッドを使用します。さらに、php5 の大きな配列の場合は、メモリ領域を節約できるため、「&」メソッドを使用して転送することをお勧めします。
参照解除
参照の設定を解除すると、
変数名
と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。例:
<?php $a = 1; $b =& $a; unset ($a); ?>
global $var で変数を宣言すると、実際にはグローバル変数への参照が作成されます。これは、これを実行するのと同じです:
<?php $var =& $GLOBALS["var"]; ?>
$this
PHP におけるアドレスのポインティング (ポインタに似た) 関数は、ユーザー自身によって実装されるのではなく、Zend コアによって実装されます。PHP における参照は、「コピー」の原則を採用しています。 on-write" 、つまり、書き込み操作が発生しない限り、同じアドレスを指す変数またはオブジェクトはコピーされません。
わかりやすく言うと
$a="ABC"; $b=$a;
$a="EFG";
$aと$bが指すメモリ内のデータを書き換える必要があるため、この時Zendコアが自動判断して自動生成します$a のデータを $b にコピーし、ストレージ用にメモリを再適用します。
関連する推奨事項:
PHP のいくつかの一般的なセッション関数
PHP の 0 と null の違い以上がphp リファレンス (&) の使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。