ホームページ  >  記事  >  バックエンド開発  >  PHP参照変数とは何ですか? PHPで参照を実装する方法

PHP参照変数とは何ですか? PHPで参照を実装する方法

不言
不言オリジナル
2018-08-06 15:25:324686ブラウズ

この記事では、PHP 参照変数とは何かについて説明します。 PHP での参照の実装方法には一定の参考値がありますので、困っている方は参考にしていただければ幸いです。

概念:

参照: PHP では、異なる変数名が同じ変数の内容にアクセスします。これが参照となり、& 記号で表されます。

動作原理の引用:

(1) PHP のメモリへの保存原理:

<?php
    $a = range(1, 100);    $b = $a;
 ?>

PHP には COW (Copy On Write) メカニズムがあるため、

a; 上記のコードは、メモリ内で次の図として表すことができます:
PHP参照変数とは何ですか? PHPで参照を実装する方法

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 は最初に割り当てられたメモリであり、変更されません。この時点で PHP参照変数とは何ですか? PHPで参照を実装する方法

#$a の値がこの時点で変更された場合:

<?php
    $a = range(1, 100);
    memory_get_usage();    
    $b = &$a;
    memory_get_usage();    
    $a = range(1,1000);
    memory_get_usage();?>

PHP参照変数とは何ですか? PHPで参照を実装する方法
参照によってこのアドレスが # に永続的に割り当てられるため、スペースがメモリ内で再度開かれないことがわかります。

##b なので、

##a と $b の値を変更すると変更されます。また、memory_get_usage() 関数を使用して表示することもできます。

(3) PHP の zval 構造体(変数コンテナ)

PHP の変数は zval 構造体に格納され、参照も zval 構造体で参照できることが分かりました 格納状態を確認する。

<?php
    $a = range(1, 100);
    xdebug_debug_zval(&#39;a&#39;);    
    $b = &$a;
?>

xdebug_debug_zval(); 関数を使用する場合は、PHP xdebug 拡張機能をインストールする必要があります。

おすすめ関連記事:

php7 と php5 の違いは何ですか? php5とphp7の比較

PHPの時刻関数strtotime()関数の原理の説明

以上がPHP参照変数とは何ですか? PHPで参照を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。