PHP中的foreach作为经常用到的函数,常常用来遍历数组,对于数组中的元素是值的情形(如一般常见型的数组),foreach只是将数组中的每份元素的值拷贝到each后面的变量,

也就是对值本身的拷贝,对其值进行改变并不会影响到数组本身。

如:

$arr = array(1, 2, 3);foreach($aa as $el){$el =+ 100;
}foreach($arr as $el){echo $el;echo "<br/>";}    // 结果:1 2 3

但是如果是对象数组的情形,也就是数组元素均为对象时,此时each后面的变量是对对象引用的拷贝,对其进行的改变会直接影响到原数组本身。这点与上面情形很容易弄混。

如:

$aa = new stdClass();
$aa->name = '张三';$bb = new stdClass();
$bb->name =  '李四';$arr = array($aa, $bb);foreach($arr as $element){$element->name = 'qqyumidi';
}foreach($arr as $el){echo $el->name;echo "<br/>";
}      // 结果:qqyumidi   qqyumidi

---------------------------------------------------------------------------------
笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢!
分类: PHP
本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/archive/2012/08/22/2651381.html,如需转载请自行联系原作者

PHP中foreach详细分析—一般数组与对象数组相关推荐

  1. 数组中数组/嵌套对象数组的遍历操作

    数组中数组/嵌套对象数组的遍历操作 总结以下方法 1.for i in arr (推荐) 2.arr.foreach(item=>{ item.foreach(item2=>{ } ) } ...

  2. Arrays.deepToString() 方法同时适用于基元数组和对象数组

    Arrays.deepToString() 方法同时适用于基元数组和对象数组: import java.util.*;public class MultiDimWrapperArray {public ...

  3. js 三维数组转对象数组 二维数组转对象数组

    1. 三维数组转对象数组 输出: 代码如下: let dataArr = [[[109.654541015625, 29.34387539941801],[110.467529296875, 59.3 ...

  4. PHP中foreach详细解读

    oreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息.有两种语法: foreach (array_ ...

  5. vue中插值语法中v-for() of 与v-for() in 遍历对象数组的异同,以及for in for of在方法中遍历对象和数组的异同

    写这个的目的是记录下Vue中使用v-for-in v-for-of遍历对象与遍历数组的区别,以及JS中使用for-in for-of 遍历对象和数组的区别. 直接说结论,节约大家时间,下面是推论,有时 ...

  6. JS删除数组(对象数组)中的指定元素

    以下列举的方法,基本能够满足数组内元素的删除,如果是多层嵌套的数组,也可使用,在该方法上循坏使用 1.filter filter:将数组中符合条件的元素保存到一个新的数组中(过滤数组中的元素) // ...

  7. 【pgsql】使用<foreach></foreach>处理数组或对象数组时的循环操作

    insert操作,用foreach标签做循环插入操作,两种不同的写法,注意foreach位置不同. @Insert(" <script> "+ " <i ...

  8. “模板”学习笔记(7)-----数组模板+对象数组举例

    我们可以定义一个数组模板,并且利用该模板声明其数组成员.声明的方式非常简单,主需要一下两步: template<class ElementType,int n>; ElementType ...

  9. java二维对象数组_java 二维数组和对象数组

    1.二维数组:二维数组就是存储一维数组(内存地址/引用)的数组 2.二维数组的初始化 1) int intA[][]={{1,2},{2,3},{3,4,5}}; 2) int [][] intB=n ...

最新文章

  1. TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)
  2. Oracle快速克隆安装
  3. Knox网关、网关简介、概述、支持的Apache Hadoop服务、支持的Apache Hadoop生态系统的UI、参考资料
  4. python语言术语_python的一些术语
  5. 在Windows Server 2008上安装和配置Web和FTP服务
  6. ios13.5.1降级_高并发系统下的降级如何实现
  7. 3d激光雷达开发(字符串输出和实体绘制)
  8. 先序中序建立二叉树的递归算法
  9. win10打印机不能服务的问题
  10. DB2错误码sqlcode对应表
  11. 软件开发成本工作量估算
  12. 如何启动联想计算机的休眠模式,如何设置休眠、待机、睡眠
  13. r5 3500u和r5 4500u的区别
  14. Open3D-GUI系列教程(七)打包应用程序
  15. SafetyNet使用机器学习策略的真实世界自动驾驶车辆的安全规划(一)
  16. 团队组成五个基本要素_团队的5个基本构成要素(5P):目标、定位、计划、职权、人...
  17. selenium闪退
  18. 百度AI——人脸识别的简单应用
  19. IIS之web服务器部署
  20. 李昌镐:苍老的青春(转载)

热门文章

  1. 为分支机构和移动人员实施路由的导图
  2. 端口基础常识大全+常用端口对照
  3. Excel事半功倍的应用
  4. elasticsearch date格式问题
  5. java获取jndi密码_用JAVA代码获取Weblogic配置的JNDI 数据源连接
  6. python第一周小测验_Python小测试
  7. docker保护python源码_Tensorflow在Docker中运行和源码编译
  8. 来讲讲Cortex-M、 ARM、和Linux
  9. php编程题试题和答案,比较基础的php面试题及答案-编程题部分
  10. poj2387(SPFA算法)