php 参照変数とは何ですか?参照変数を定義するにはどうすればよいですか?この記事では、PHP でメモリ空間から変数を参照する基本的な概念と操作方法、および一般的な例を簡単に紹介します。
参照変数とは何ですか?PHP では、参照変数を定義するためにどのようなシンボルが使用されますか?
異なる名前が同じ変数内容にアクセスするには、& を使用します。表現するために 。
COW(コピーオンライト)
メモリ最適化の一般的な方法。この方法は、PHP でもメモリを最適化するために使用されます。
コピーオンライト、つまり、1 つ以上の変数が書き込まれるときのみ、メモリのコピーがコピーされ、その内容が変更されます。
PHP でmemory_get_usage() を使用してメモリの変化を観察する
未使用 & (参照変数)
$a = range(0,1000); var_dump(memory_get_usage()); $b = $a;` var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
走行結果:
1回目と2回目では記憶に大きな差はありませんでしたが、3回目では大きな違いがありました
&
$a = range(0,1000); var_dump(memory_get_usage()); $b = &$a; var_dump(memory_get_usage()); $a = range(0,1000); var_dump(memory_get_usage());
の使用 実行結果:
参照を使用して値を渡すメモリ解析分析:
##$a は、割り当てられたときにメモリ内のメモリ領域を占有します。
$b=&$ の場合a
$b は同じメモリ空間を指します。
$a が変更されると、
$b が占有するメモリ空間は
$a の変更に従います
unset() は逆参照のみを行い、スペースを破壊しません
$a=1; $b=&$a; unset($b); echo $a;出力結果:
1
#$a に $b=&$a が割り当てられ、その後 $a と $b が直接実行されますunset($b) が $a への $b の参照をキャンセルすると、$b は $a余談オブジェクトのメモリ空間を指さなくなります。それ自体は参照によって渡されます
class Person { public $name="zhangsan"; } $p1 =new Person; xdebug_debug_zval('p1'); $p2 =$p1; xdebug_debug_zval('p1'); $p2->name="lisi"; xdebug_debug_zval('p1');実行結果:
結果分析:
オブジェクトがインスタンス化され、参照によって渡された後は、
$p1Case$p2
は常に同じメモリ空間を指します
<?php $data = ['a', 'b', 'c']; foreach($data as $key => $val) { $val = &$data[$key]; } var_dump($data);
プログラムの実行中、各ループが終了した後の変数 $data の値は何ですか?
プログラムの実行が完了した後、変数 $data の値は何になりますか?
関連する推奨事項:
php 変数リファレンスとオブジェクト リファレンス詳細な紹介_PHP チュートリアル
以上がPHP参照変数とは何ですか? PHP参照変数の説明例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。