PHPでの値による参照

WBOY
リリース: 2016-06-23 13:24:09
オリジナル
1348 人が閲覧しました

1. 単純なデータ型の代入は値の転送であり、関数の戻り値の代入も値の転送です。また、PHP の参照では、「コピー オン ライト」の原則が採用されています。つまり、書き込み操作が発生しない限り、同じアドレスを指す変数やオブジェクトはコピーされません。

平たく言うと

1: 次のコードがあるとします

$a="ABC"; $b=$a;
ログイン後にコピー

実際、この時点では $a と $b は両方とも同じメモリ アドレスを指しており、$a と $b が異なるメモリを占有しているわけではありません

2: 上記のコードを元に、以下のコードを追加します

$a="EFG";
ログイン後にコピー

$a と $b が指すメモリ内のデータを書き換える必要があるため、このとき Zend コアが自動的に判断して自動的に$a を $b に生成します。 データをコピーし、ストレージ用のメモリを再適用します

2. オブジェクトの割り当ては参照によって行われ、メソッド定義と呼び出しの前に & 演算子を追加すると、参照としても渡されます。

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
ログイン後にコピー

3. global キーワードを使用する場合 変数を宣言すると、実際にはグローバル変数への参照が作成されます。つまり、次の 2 行の結果は同じです:

global $val;$var =& $GLOBALS["var"];/*当用unset($val)取消引用时,只是断开了变量名$var和 变量内容 之间的绑定,并不会销毁全局变量$GLOBALS["var"]*/
ログイン後にコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート