この記事では、主に PHP の参照変数に関する詳細な知識を紹介します。必要な友達に参照してもらいます。 コンセプト: PHP における参照とは、別の名前を使用することを意味します。同じ変数の内容にアクセスします。
定義メソッド: PHP は参照変数を定義するために '&' を使用します。
参照が使用されない場合、変数はコピーオンライトメカニズム (COW) を採用します。書き込み 印刷されると、変更のためにメモリのコピーがコピーされます。たとえば
//定义一个变量 $a = range(0,1000); var_dump(memory_get_usage()); //打印内存使用量 //定义一个变量b $b = $a; //此时$b和$a 指向同一个内存空间 var_dump(memory_get_usage()); //当a或b发生写入时,才会复制一块内存进行修改 $a = range(0,1000); var_dump(memory_get_usage());
参照が使用される場合、変数は同じメモリ空間を指し、書き込み操作中に変更されません
//定义一个变量 $a = range(0,1000); var_dump(memory_get_usage()); //打印内存使用量 //定义一个变量b $b = &$a; //将a的空间赋值给b,a与b指向同一空间 var_dump(memory_get_usage()); //当a或b发生写入时,内存不会发生复制 $a = range(0,1000); var_dump(memory_get_usage());
検証のためにzval変数コンテナを渡しました
//通过zval变量容器打印 $a = range(0,3); xdebug_debug_zval('a');//打印 指向内存空间的变量数,和是否被引用 $c =&$a; xdebug_debug_zval('a'); $c = range(0,3); xdebug_debug_zval('a');
実行結果:
cに書き込むとき、メモリを指す変数がまだ2つあり、コピーオンライトは発生しません unset は逆参照のみを行い、スペースは破壊しません
class Person{ public $name = "zhangsan"; } $p1 = new Person(); xdebug_debug_zval('p1'); $p2 = $p1; xdebug_debug_zval('p1'); $p2->name = "lesi"; xdebug_debug_zval('p1');
php 参照定義と参照渡しパラメータの使い方の詳しい説明
以上がPHP参照変数の知識を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。