ホームページ  >  記事  >  バックエンド開発  >  PHP参照変数とは何ですか? PHP参照変数の説明例

PHP参照変数とは何ですか? PHP参照変数の説明例

不言
不言オリジナル
2018-09-08 15:47:562404ブラウズ

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());

走行結果:

PHP参照変数とは何ですか? PHP参照変数の説明例

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());

の使用 実行結果:

PHP参照変数とは何ですか? PHP参照変数の説明例

参照を使用して値を渡すメモリ解析分析:

PHP参照変数とは何ですか? PHP参照変数の説明例

##$a は、割り当てられたときにメモリ内のメモリ領域を占有します。$b=&$ の場合a $b は同じメモリ空間を指します。$a が変更されると、$b が占有するメモリ空間は $a の変更に従います

unset

unset() は逆参照のみを行い、スペースを破壊しません

$a=1;
$b=&$a;
unset($b);
echo $a;
出力結果:

1

メモリ空間の分析:


PHP参照変数とは何ですか? PHP参照変数の説明例

#$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');
実行結果:

PHP参照変数とは何ですか? PHP参照変数の説明例

結果分析:

PHP参照変数とは何ですか? PHP参照変数の説明例

オブジェクトがインスタンス化され、参照によって渡された後は、
$p1 $p2 は常に同じメモリ空間を指します
Case

     <?php     
     $data = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;];
    
     foreach($data as $key => $val)
     {
          $val = &$data[$key];
     }
    var_dump($data);

上記のように書く プログラムの出力は?

プログラムの実行中、各ループが終了した後の変数 $data の値は何ですか?
プログラムの実行が完了した後、変数 $data の値は何になりますか?

メモリの変更と分析:

PHP参照変数とは何ですか? PHP参照変数の説明例

関連する推奨事項:

php 変数リファレンスとオブジェクト リファレンス詳細な紹介_PHP チュートリアル

php変数参照とオブジェクト参照の詳細な紹介

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

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