首页 > Web开发 > 详细

php引用&使用笔记

时间:2018-06-04 13:48:04      阅读:214      评论:0      收藏:0      [点我收藏+]

引用与赋值是两个概念:引用是共用同一个内存地址,一个改变其他也会变,赋值是另外开辟内存空间,一个改变其他不会变

一个简单例子:

$a=123;     //$a开辟一个内存空间存储123
$b=&$a;     //$b通过&引用$a的内存地址,所以是两者指向同一个地方
var_dump($b);      //此时$b打印的值为123
$b=567;     //当$b的值改变成567时,此时$a和$b共同指向的内存地址的值改变成567
var_dump($a);   //所以$a打印的值为567

  技术分享图片

更深入的引入例子:

$data=[‘a‘,‘b‘,‘c‘];
foreach($data as $k=> $v){
    $v = &$data[$k];
    var_dump($data);
}
var_dump($data);  

解答思路:

  (1)首先第一次循环在未进入循环体时$v是指向一个内存地址,进入循环体后$data[0]是指向另一个内存地址,经过引用后$v引入了$data[0]的内存地址

技术分享图片

  输出a,b,c

  (2)然后第二次在未进入循环体执行foreach这行代码时,$v的值为b,所以导致$data[0]变成了b

技术分享图片

    进入循环体后$v引用了data[1]的内存地址

    技术分享图片

  输出b,b,c

  (3)同理第三次在未进入循环体执行foreach这行代码时,$v的值为c,所以导致$data[1]变成了c,进入循环体后$v引用$data[2]的内存地址

  输出b,b,c

 

所以整个流程的输出结果为:

技术分享图片

php引用&使用笔记

原文:https://www.cnblogs.com/legendheng/p/9132698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!