摘要:是指将数组的值给,当我们需要直接操作原数组时,就会添加引用符号,这时接收的是数组值的地址空间。输出结果异常分析第一个遍历结束,因为是引用赋值,所以变量和最后一个数组单元是同一个地址空间。
foreach($arr as $key=>$value){}
foreach是指将数组$arr的值copy给$value,当我们需要直接操作原数组时,就会添加引用符号&,这时$value接收的是数组值的地址空间。
$arr = ["a","b","c"]; foreach($arr as $key=>&$value){} foreach($arr as $key=>$value){ echo $value; }
输出结果: abb
异常分析:
第一个遍历结束,因为是引用赋值,所以$value变量和最后一个数组单元c是同一个地址空间。
第二个遍历中,是copy赋值,数组的每个值依次赋值给$value(等同于数组中的元素c)的地址空间,所以
第一次遍历后$arr = ["a","b","a"] //变量c因为$value被赋值为a,也跟着变为a
第二次遍历后$arr = ["a","b","b"] //变量c因为$value被赋值为b,也跟着变为b
第三次遍历后$arr = ["a","b","b"] //这里相当于 $value = $value 自己给自己赋值
看懂这个,可以思考一下 下面循环出现异常的原因:
$arr = array(1,2,3); foreach ($arr as $k => $v){ $v = &$arr[$k]; } var_dump($arr);
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22436.html
摘要:这种行为比最初出现的问题更为棘手,同时也是一种常见的错误源。这意味着这个数组的一份拷贝将会被返回,因此被调函数与调用者所访问的数组并不是同样的数组实例。 showImg(https://segmentfault.com/img/bV7reP?w=620&h=620); PHP 语言让 WEB 端程序设计变得简单,这也是它能流行起来的原因。但也是因为它的简单,PHP 也慢慢发展成一个相对...
摘要:是一个基于的模板引擎。模板中未被定义的变量将被认为是一个字符串。公众号回复全栈,领取前端,,产品经理,微信小程序,等资源合集大放送。公众号回复面试,领取面试实战学习资源。 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web...
阅读 1563·2021-11-24 09:39
阅读 2995·2021-11-22 15:24
阅读 3057·2021-10-26 09:51
阅读 3242·2021-10-19 11:46
阅读 2858·2019-08-30 15:44
阅读 2179·2019-08-29 15:30
阅读 2507·2019-08-29 15:05
阅读 739·2019-08-29 10:55