PHP中foreach循环中使用引用要注意的地方
admin
2023-06-27 16:23:29
0

发现了一个容易出错,但是不懂得原理却解释不明白的问题,碰到类似问题的朋友可以参考下。

复制代码代码如下:


foreach ($array as &$v) { 
    $v = explode('/', $v); 

foreach ($array as $v) { 
    //do something 


这么写,在第二个循环会出逻辑错误,加入第二个循环中do something的地方是输出$v,循环到最后一个的时候的输出是倒数第二个元素,而不是最后一个 

要这么写 

复制代码代码如下:


foreach ($array as &$v) { 
    $v = explode('/', $v); 

unset($v); 
foreach ($array as $v) { 
    //do something 


或者第一个循环这么写 

复制代码代码如下:


foreach ($array as $k => $v) { 
    $array[$k] = explode('/', $r); 
}


说一下原理 
第一个循环使用了引用,循环结束后,$v引用的是$array数组的最后一个元素,当开始第二个循环的时候,$v变量每次循环都会被赋一个新值,在php中,如果一个内存空间是被引用的,那么当改变它的时候是直接改变这块内存空间的值,也就是说,当第二个foreach的第一次循环,$array的最后一个元素的值就被改变为$array的第一个元素的值,第二次循环的时候,改变为第二个元素的值,倒数第二次循环的时候,被改变为倒数第二个元素值,而最后一次循环的时候得道的值必然是那个倒数第二个值 
当然,如果php的for循环有作用域的话,也不会出现此问题.....

相关内容

热门资讯

“敏昂莱更依赖中国,但首访选了... 【文/观察者网 陈思佳】缅甸外交部近日宣布,缅甸总统敏昂莱将于5月30日至6月3日访问印度,这是他就...
沈伯洋为选举拥抱贪污犯陈水扁,... 海峡导报综合报道 陈水扁日前力挺民进党台北市长参选人沈伯洋,希望沈能成为继自己之后,第2位民进党籍台...
原创 神... 大家好,我是小川[太阳] 5月29日晚,神舟二十二号飞船稳稳降落东风着陆场,圆满完成超长在轨任务,三...
85岁院士李立浧发出豪言:“我... 庆祝2026年“全国科技工作者日”,广州举办主场活动暨“科学家故事会” 羊城晚报全媒体记者 李钢 “...
钱学森之子辟谣 近年来,与钱学森先生相关的一句话广为流传,成为了“热梗”。这句话就是“人再笨还学不会微积分吗”,但其...
越来越多城市推行有奖发票 作者 | 第一财经 陈益刊今年中央财政投入100亿元在50个试点城市开展有奖发票试点,而未纳入试点范...
创明申请甲醇增程器功率控制方法... 国家知识产权局信息显示,绵阳创明智能电池有限责任公司、深圳市创明新能源股份有限公司申请一项名为“甲醇...
原创 红... 这一到618活动红米手机就杀疯了,本身高配低价的手机再降价,一下子吸引了很多用户入手,在京东平台内,...
一所突然“消失”的学校,一个心... 2120万元的赔偿请求,最终仅判赔2.53万元。2026年2月10日,一审判决送达后,武敏只用3天就...
新华社:人工智能和能源加速“双... 新华社发文表示,中国石油“昆仑”大模型深度解析复杂地质构造和油气藏特征,助力油气勘探开发提质增效;南...