今天在使用foreach遍历数组时发现,当使用&时会出现问题:

$arr = array(
array('id' => 100, 'error'=> 'aa'),
array('id' => 101, 'error'=> 'bb'),
); foreach($arr as &$value) {
if($value['id'] == 101) $value['error'] = 'test';
} var_dump($arr); foreach($arr as $value) {}
var_dump($arr);

  

后来查看手册才发现,原来是因为在遍历时使用引用,当第二次遍历数组时,数组的指针$value 还是指向数组的末尾的元素,当重新赋值时 $value 指向的数组的末尾的元素就被修改了
解决办法是在第一次遍历完成之后就将$value unset()掉。

php 中遍历数组时使用引用出现的问题的更多相关文章

  1. Java中遍历数组的三种方式复习

    1 for循环遍历 通常遍历数组都是使用for循环来实现.遍历一维数组很简单,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度. 程序示例: package captai ...

  2. php中遍历数组的方法

    参考网址:http://www.jb51.net/article/29949.htm 这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为 ...

  3. jQuery中使用$.each()遍历数组时要注意的地方

    使用jQuery中 $.each()遍历数组,要遍历的数组不能为空(arry!="") 例如:           $.each(arry, function (i, item)  ...

  4. 以forin的方式遍历数组时进行删除操作的注意点

    今天在修改某项需求的时候,需要在遍历的时候将匹配项移除掉,采用的时forin的方式遍历,然后运行的时候却crash掉了 for (NSString*str in self.btnArray) { if ...

  5. IOS开发_中遍历数组的方法及比较

    数组,做为一种常用的数据类型,频繁出现在编码中,其中肯定少不了对数组的遍历,本博文对数组遍历,进行一下自己的归纳,如果是大牛,一笑而过就好,互相学习,欢迎指正. 话不多说直接进入主题 首先创建一个数组 ...

  6. JavaScript中遍历数组和对象的方法

    js数组遍历和对象遍历 针对js各种遍历作一个总结分析,从类型用处,分析数组和对象各种遍历使用场景,优缺点等 JS数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3 ...

  7. JS中遍历数组、对象的方式

    1.标准的for循环遍历数组 //不打印自定义属性和继承属性 var array = [1,2,3]; for (var i = 0; i < array.length; i++) { cons ...

  8. JavaScript中遍历数组 最好不要使用 for in 遍历

    先看一段代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  9. Javascript中遍历数组方法的性能对比

    Javascript中常见的遍历数组的方法 1.for循环 for(var i = 0; i < arr.length; i++) { // do something. } 2.for循环的改进 ...

随机推荐

  1. Java笔记(一)

    Java语言特征 Java之父:詹姆斯,格斯林 跨平台:一次编译,到处运行write once,run everywhere! Java是一种面向对象的编程语言(OOP)面向对象(OO -- Orie ...

  2. MySQL之账户管理

    MySQL之账户管理 账户管理是MySQL用户管理最基本的内容.包括登录,退出MySQL服务器.创建用户.删除用户.密码管理和权限管理等内容. 其中登录方式非常简单,在这个地址有:http://www ...

  3. Java是目前最广泛的_______编程语言

    计算机网络 注意:在配置环境变量时,classpath是为找文件服务的

  4. Linux常用性能调优工具索引

    root@ubuntu:~# dstat----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--usr sys i ...

  5. webform JS打印方法

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DaYin.aspx.cs&qu ...

  6. java封装学习

    封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.把过程和数据包围起来,对数据的访问只能通过已定义的接口. 在java中通过关键字priva ...

  7. redis 与 spring整合 hash 增删改操作 list增删改操作

    本人,对于以前redis的学习是非常痛苦的!近期将以前的东西捡起来.以博客的形式存储,以便于以后快速捡起来,并和广大同胞一起分享! 1):简单介绍 redis 是基于C语言开发. redis是一个ke ...

  8. SQL多表联查

    left join >>>外联 on >>>跟and一样使用,作为外联条件 表明后面加大写字母表示该表别名 例: select A.*,B.name userNam ...

  9. http协议get、post请求分析及用HttpRequester测试的报错及可能原因

    1.get.post区别 Get Post 获取/提交数据 主要获取数据,不修改数据 主要提交数据,可修改数据 是否需要form表单 不一定 需要 安全性 查询字符串会显示在地址栏的URL中,不安全. ...

  10. MongoDB的基础知识

    本人只是软件开发的一个菜鸟,在学习MongoDB,总结了一点自己学习的知识,监督自己学习. 如果文章中有不足的地方,还请大神指点迷津,纠正改错,谢谢. 一.MongoDB简介 MongoDB是一个基于 ...