PHP中foreach详细分析—一般数组与对象数组

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 = ‘mrxia‘;
}

foreach($arr as $el){
    echo $el->name;
    echo "<br/>";
}      // 结果:mrxia   mrxia
时间: 2024-08-03 19:05:50

PHP中foreach详细分析—一般数组与对象数组的相关文章

JNI/NDK开发指南(五)——访问数组(基本类型数组与对象数组)

转载请注明出处:http://blog.csdn.net/xyang81/article/details/42346165 JNI中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是JNI的基本数据类型,可以直接访问.而对象数组中的所有元素是一个类的实例或其它数组的引用,和字符串操作一样,不能直接访问Java传递给JNI层的数组,必须选择合适的JNI函数来访问和设置Java层的数组对象.阅读此文假设你已经了解了JNI与Java数据类型的映射关系,如果还不了解

JS对象/数组/识别对象数组

一.对象: 1.对象创建: (1) var obj={}; (2) var obj= new Object();  obj.name="Wang",obj.age=12 (3) Object.create({}); 2.对象访问: (1) obj.a; (2) obj[a];  //a可以是相同的字符串,和数组: 3.对象方法: (1) obj.hasOwnPrototype("prop");    判断对象是否为自身,返回true:如为继承属性,false: (2

多态机制详细分析以及c++内存对象布局

什么是多态? 多态性可以简单的概括为"1个接口,多种方法",在程序运行的过程中才决定调用的机制 程序实现上是这样,通过父类指针调用子类的函数,可以让父类指针有多种形态. 2 实现机制 举一个例子: #include <iostream.h> class animal { public: void sleep() { cout<<"animal sleep"<<endl; } void breathe() { cout<<

Array(数组)对象--&gt;数组的删除

1.数组的删除: 用delete操作符删除特定的元素 删除元素的位置只是被留空了,为undefined值 举例:删除下面数组中的第二个元素 var arr = [1,2,3,4,5]; /*删除第二个元素*/ delete arr[1] console.log(arr); 输出:位置还在 原文地址:https://www.cnblogs.com/abner-pan/p/12682940.html

vue学习(十) v-for循环普通数组 、对象数组、 迭代数字

//html <div id="app"> <p v-for="item in list">{{item}}</p> <p v-for="(item, i) in list">索引{{i}}---值{{item}}</p> <p v-for="user in list2">id是{{user.id}}---名字是{{user.name}} </p&g

OpenStack_Swift源码分析——创建Ring及添加设备源码详细分析

1 创建Ring 代码详细分析 在OpenStack_Swift--Ring组织架构中我们详细分析了Ring的具体工作过程,下面就Ring中增加设备,删除设备,已经重新平衡的实现过程作详细的介绍. 首先看RingBuilder类 def __init__(self, part_power, replicas, min_part_hours): #why 最大 2**32 if part_power > 32: raise ValueError("part_power must be at

java之对象数组

package com; /**  * 学生类   *  */ public class Student { private String name; private int age; public Student(){} public Student(String name,int age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(Stri

面向对象基础——构造方法私有化、对象数组、内部类

构造方法私有化 类的封装性不光体如今对属性的封装上.实际上方法也是能够被封装的,当然,在方法封装上也包括了对构造方法的封装.比如例如以下代码就是对构造方法封装. class Singleton{ private Singleton(){ // 将构造方法进行了封装,私有化 } public void print(){ System.out.println("Hello World!!!") ; } }; 使用 class Singleton{ private Singleton(){

廖雪峰JS教程学习记---数组和对象

$数组和对象 数组 JavaScript的数组可以包括任意数据类型.例如: [1, 2, 3.14, 'Hello', null, true]; 数组用[]表示,元素之间用,分隔. 另一种创建数组的方法是通过Array()函数实现: new Array(1, 2, 3); // 创建了数组[1, 2, 3] 然而,出于代码的可读性考虑,强烈建议直接使用[]. 数组的元素可以通过索引来访问.请注意,索引的起始值为0: var arr = [1, 2, 3.14, 'Hello', null, tr