Heim  >  Artikel  >  Backend-Entwicklung  >  php 地址引用

php 地址引用

WBOY
WBOYOriginal
2016-06-23 14:31:471417Durchsuche

php的地址引用与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址 。
废话少说,先看例子,

php 
    $a = " ABC " ; 
    $b   =& $a ; 
    echo   $a ;  // 这里输出:ABC 
    echo   $b ;  // 这里输出:ABC 
    $b = " EFG " ; 
    echo   $a ;  // 这里$a的值变为EFG 所以输出EFG 
    echo   $b ;  // 这里输出EFG 
?>  

 

上面的例子大家都明白,就不再多说了。那么看看下面的例子呢?

php 
    $a   =   " ABC " ; 
    $b   =&   $a ; 
    unset  ( $a ); 
    echo   $b ;  // 这里输出:ABC 
?>  

 

原来是这个样子的,当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。
 
//下面再来个小插曲
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
通俗的讲,如果有下面的代码

php 
    $a = " ABC " ; 
    $b = $a ; 
?>

 

其实此时 $a与$b都是指向同一内存地址 而并不是$a与$b占用不同的内存
2:如果在上面的代码基础上再加上如下代码

$a = " EFG " ;

 

由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断 自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP 截取 中文Nächster Artikel:php学习心得