この記事では、PHP 参照変数とは何かについて説明します。 PHP での参照の実装方法には一定の参考値がありますので、困っている方は参考にしていただければ幸いです。
概念:
参照: PHP では、異なる変数名が同じ変数の内容にアクセスします。これが参照となり、& 記号で表されます。
動作原理の引用:
(1) PHP のメモリへの保存原理:
<?php $a = range(1, 100); $b = $a; ?>
PHP には COW (Copy On Write) メカニズムがあるため、
a; 上記のコードは、メモリ内で次の図として表すことができます:
Only when
a のストレージはこの時点で再度開かれます; これは PHP の COW メカニズムです。つまり:
<?php $a = range(1, 100); $b = $a; $a = range(1, 100); ?>
これは変わりませんが、
a。 PHP 関数のmemory_get_usage() を使用してメモリ使用量を確認し、それを証明できます。
(2) PHPにおける参照の実装原理
<?php $a = range(1, 100); $b = &$a; ?>
このとき、参照(&)があるのでメモリ上にあります
a は最初に割り当てられたメモリであり、変更されません。この時点で
#$a の値がこの時点で変更された場合:
<?php $a = range(1, 100); memory_get_usage(); $b = &$a; memory_get_usage(); $a = range(1,1000); memory_get_usage();?>
参照によってこのアドレスが # に永続的に割り当てられるため、スペースがメモリ内で再度開かれないことがわかります。
##a と $b の値を変更すると変更されます。また、memory_get_usage() 関数を使用して表示することもできます。
(3) PHP の zval 構造体(変数コンテナ)
PHP の変数は zval 構造体に格納され、参照も zval 構造体で参照できることが分かりました 格納状態を確認する。
<?php $a = range(1, 100); xdebug_debug_zval('a'); $b = &$a; ?>
xdebug_debug_zval(); 関数を使用する場合は、PHP xdebug 拡張機能をインストールする必要があります。
おすすめ関連記事:
php7 と php5 の違いは何ですか? php5とphp7の比較PHPの時刻関数strtotime()関数の原理の説明以上がPHP参照変数とは何ですか? PHPで参照を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。