服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - PHP中foreach循环中使用引用要注意的地方

PHP中foreach循环中使用引用要注意的地方

2019-11-14 15:15php教程网 PHP教程

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

代码如下:


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

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


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

要这么写 

复制代码代码如下:


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

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


或者第一个循环这么写 

复制代码代码如下:


foreach ($array as $key => $row) { 
$array[$key] = explode('/', $row); 



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

延伸 · 阅读

精彩推荐
  • PHP教程php实现构建排除当前元素的乘积数组方法

    php实现构建排除当前元素的乘积数组方法

    在本篇文章中我们给大家整理了关于php实现构建排除当前元素的乘积数组的方法以及相关实例代码,有需要的朋友们参考下。...

    laozhang3002019-09-03
  • PHP教程基于 Swoole 的微信扫码登录功能实现代码

    基于 Swoole 的微信扫码登录功能实现代码

    随着微信的普及,扫码登录方式越来越被现在的应用所使用。它因为不用去记住密码,只要有微信号即可方便快捷登录.这里基于微信公众平台的带参数临时...

    wh4690129173812019-10-25
  • PHP教程php实现文章评论系统

    php实现文章评论系统

    这篇文章主要为大家详细介绍了php实现文章评论系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    奇幻屋2162019-06-12
  • PHP教程php curl批处理实现可控并发异步操作示例

    php curl批处理实现可控并发异步操作示例

    这篇文章主要介绍了php curl批处理实现可控并发异步操作,结合实例形式分析了php使用curl的curl_multi_*族函数进行并发操作相关实现技巧,需要的朋友可以参考...

    战神悟空4832019-10-08
  • PHP教程PHP 数组排序方法总结 推荐收藏

    PHP 数组排序方法总结 推荐收藏

    文章详细的介绍了快速创建数组的函数range()和常见PHP数组排序的方法,希望对大家有帮助。 ...

    php教程网2902019-11-03
  • PHP教程Yii2.0建立公共方法简单示例

    Yii2.0建立公共方法简单示例

    这篇文章主要介绍了Yii2.0建立公共方法,结合实例形式分析了Yii2.0建立公共方法的基本原理、步骤与相关操作注意事项,需要的朋友可以参考下...

    费墨c3572019-06-21
  • PHP教程PHP数字金额转换成中文大写显示

    PHP数字金额转换成中文大写显示

    今天小编就为大家分享一篇关于PHP数字金额转换成中文大写显示,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小...

    只是个宝宝3132019-07-07
  • PHP教程php实现的PDO异常处理操作分析

    php实现的PDO异常处理操作分析

    本文实例讲述了php实现的PDO异常处理操作。分享给大家供大家参考,具体如下: 异常处理: PHP:默认为直接报错 MYSQL:默认为静默模式,错就错,不报错...

    菜鸟学编程$2192019-07-08