Home  >  Article  >  Backend Development  >  What are php reference variables? How to implement references in PHP

What are php reference variables? How to implement references in PHP

不言
不言Original
2018-08-06 15:25:324610browse

This article introduces to you what is a PHP reference variable? How to implement references in PHP has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Concept:

Reference: In PHP, different variable names access the content of the same variable, which becomes a reference and is represented by the & symbol.

Quote working principle:

(1) Principle of PHP storage in memory:

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

Because there is a COW (Copy On Write) mechanism in PHP, so

a; The above code can be represented as the following picture in memory:
What are php reference variables? How to implement references in PHP

Only when # The storage of

##a will be re-opened at this time; this is PHP's COW mechanism. That is:

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

Although this does not change

a. You can use the PHP function memory_get_usage() to check the memory usage to prove it.

(2) Implementation principle of references in PHP

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

At this time, because there is a reference (&), it is in the memory

a is the memory allocated initially and will not change. At this time

What are php reference variables? How to implement references in PHP

Then if the value of $a is changed at this time:

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

What are php reference variables? How to implement references in PHPYou can see that a space will not be re-opened in the memory, because the reference permanently assigns this address to

b, so changing the values ​​of

##a and $b will change. You can also use the memory_get_usage() function to view it.

(3) zval structure (variable container) in PHP

We know that variables in PHP are stored in the zval structure, and references can also be viewed in the zval structure Check the storage status.

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

When using the xdebug_debug_zval(); function, you need to install the PHP xdebug extension.

Recommended related articles:

What are the differences between php7 and php5? Comparison between php5 and php7

Explanation of the principle of the time function strtotime() function in PHP

The above is the detailed content of What are php reference variables? How to implement references in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn