foreach 循环对象的方法

PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。

复制代码代码如下:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。 
自PHP 5 起,还可能遍历对象。 

注意:
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。

注意:
除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。foreach对数组指针有些副作用。除非对其重置,在 foreach 循环中或循环后都不要依赖数组指针的值。 
自 PHP 5 起,可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。

复制代码代码如下:

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>

此方法仅在被遍历的数组可以被引用时才可用(例如是个变量)。

复制代码代码如下:

<?php
foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}
?>

时间: 2024-10-14 15:40:14

foreach 循环对象的方法的相关文章

2.24 Java基础总结 ①for-each循环②继承概念③全类名④方法重写

①for-each循环②继承概念③全类名④方法重写 一.for-each循环依次遍历集合中每个元素的时候,for循环的一种int [] a = {1,2,3};for(int result : a){ System.out.println(result);} 全部依次遍历,但是没有细节的处理 二.继承is-a的关系子类继承来自父类中的所有属性和方法,呗继承的受访问修饰符限制但是构造不能被继承,父类的构造在构造是会起作用优点:①复用性②扩展父类属性和方法 Java是单继承,一个类只有一个父类单继承

mongo里面根据对象字段的ID查询 db.Photo.find({&#39;owner.$id&#39;:ObjectId(&#39;xxxx&#39;)}) , 并且使用forEach循环修改查询的数据

var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}).forEach(function(o){o.owner=null;db.Photo.save(o)}); mongo里面根据对象字段的ID查询 db.Photo.find({'owne

JSTL FOREACH循环每行两和三列的显示方法

1 //两列的 2 <c:forEach var="bean" items="${result}" varStatus="status"> 3 <c:if test="${status.count%2==1}"> 4 <tr> 5 </c:if> 6 <td><b>$...{bean.id}</b>:$...{bean.name}</td

第46条:for-each循环优先于传统的for循环

for-each循环通过完全隐藏迭代器或者索引变量,避免混乱和出错的可能,适用于集合和数组和任何实现Iterable接口的对象. 使用传统for循环,容易出错: enum Face { ONE, TWO, THREE, FOUR, FIVE, SIX } Collection<Face> faces = Arrays.asList(Face.values()); for(Iterator<Face> i = faces.iterator(); i.hasNext();) for(I

js Array数组对象常见方法总结

Array对象一般用来存储数据. 其常用的方法包括: 1.concatc()方法 concat() 方法用于合并两个或多个数组.它不会更改现有数组,而是返回一个新数组. 例如: var arr1=[1,2,3]; var arr2=[4,5,6]; var arr3=arr1.concat(arr2,"7",8,[9,10]); document.write(arr3);//1,2,3,4,5,6,7,8,9,10 2.join()方法 join方法通过指定的分隔符将数组连接成字符串.

JAVA中的for-each循环与迭代

在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable<T>接口(位于java.lang包中),实现这个接口允许对象成为 "foreach" 语句的目标,而此接口中的唯一方法,实现的就是返回一个在一组 T 类型的元素上进行迭代的迭代器. 一.迭代器Iterator 接口:Iterator<T> 1 public interface Iterator<E>{ 2 3 boolean h

使用for循环还是foreach循环?

很多时候我们很自然的认为,for循环的时候使用foreach和原来的for循环用下标的方式遍历是相同的. 而且因为foreach循环写法简单,很容易理解,而且少去了很多麻烦的变量,所以估计在学会使用foreach循环之后,很多人就没有用过下标的循环了. 但是你知道两者其实还是有很大区别的,在不同的情况下面应该使用不同的方式去循环. 否则会导致循环的时间变长.数据量小的时候当然没有什么关系,但是一旦数据量大了之后问题就会暴露出来了. 首先我们要知道的时候foreach循环是利用迭代器的使用循环.那

Java中遍历Map对象的方法

方法一: 在for-each循环中使用entries来遍历 这是最常见的遍历方式,在需要获取key和value时使用. Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() +

常用的循环遍历数据方法---迭代器模式

咱们在C#项目开发过程中,经常使用foreach的方式来循环遍历某个聚合对象:可能已有很多人遗忘了它的工作原理:今天,我们从这里开始:实际上它是把已经聚集好的一个集合,我们不需要知道其实际的对象类型而循环读取数据:这个地方就用到了我们今天要讲的设计模式---迭代器模式:有兴趣的同学,可以下来了解一下IEumerator 和IEnumerable 接口. 什么是迭代器设计模式?提供一种方法顺序访问聚合对象中的各个元素,并又不暴露其内部表示.  也就是说,我们需要访问一个聚合对象的数据时候.需要对聚