foreach 

http://php.net/manual/zh/control-structures.foreach.php

(PHP 4, PHP 5)

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

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

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

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key

还能够自定义遍历对象。

Note:

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

由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。

可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>

$value 的引用仅在被遍历的数组可以被引用时才可用(例如是个变量)。以下代码则无法运行:

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

?>

Warning

数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。

Note:

foreach 不支持用“@”来抑制错误信息的能力。

用户可能注意到了以下的代码功能完全相同:

<?php
$arr = array("one", "two", "three");
reset($arr);
while (list(, $value) = each($arr)) {
    echo "Value: $value<br>\n";
}

foreach ($arr as $value) {
    echo "Value: $value<br />\n";
}
?>

以下代码功能也完全相同:

<?php
$arr = array("one", "two", "three");
reset($arr);
while (list($key, $value) = each($arr)) {
    echo "Key: $key; Value: $value<br />\n";
}

foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br />\n";
}
?>

示范用法的更多例子:

<?php
/* foreach example 1: value only */

$a = array(1, 2, 3, 17);

foreach ($a as $v) {
   echo "Current value of \$a: $v.\n";
}

/* foreach example 2: value (with its manual access notation printed for illustration) */

$a = array(1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach ($a as $v) {
    echo "\$a[$i] => $v.\n";
    $i++;
}

/* foreach example 3: key and value */

$a = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach ($a as $k => $v) {
    echo "\$a[$k] => $v.\n";
}

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}

/* foreach example 5: dynamic arrays */

foreach (array(1, 2, 3, 4, 5) as $v) {
    echo "$v\n";
}
?>

用 list() 给嵌套的数组解包

(PHP 5 >= 5.5.0)

PHP 5.5 增添了遍历一个数组的数组的功能并且把嵌套的数组解包到循环变量中,只需将 list() 作为值提供。

例如:

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    // $a contains the first element of the nested array,
    // and $b contains the second element.
    echo "A: $a; B: $b\n";
}
?>

以上例程会输出:

A: 1; B: 2
A: 3; B: 4

list() 中的单元可以少于嵌套数组的,此时多出来的数组单元将被忽略:

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a)) {
    // Note that there is no $b here.
    echo "$a\n";
}
?>

以上例程会输出:

1
3

如果 list() 中列出的单元多于嵌套数组则会发出一条消息级别的错误信息:

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b, $c)) {
    echo "A: $a; B: $b; C: $c\n";
}
?>

以上例程会输出:

Notice: Undefined offset: 2 in example.php on line 7
A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7
A: 3; B: 4; C: 

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/

***PHP 遍历数组的方法foreach相关推荐

  1. javascript数组——新建数组、访问数组、遍历数组的方法、数组对象的方法、冒泡排序算法、json的正反序列化

    目录 数组 通过构造函数的三种方法 字面量创建数组方式 访问数组 遍历数组的方法 遍历:遍历就是把数组中的元素从头到尾都访问一次 操作数组对象的方法 删除和添加 delete与Vue.delete区别 ...

  2. JavaScript中遍历数组的方法

    目录 JavaScript中遍历数组的方法 1.for 循环遍历 2.forEach 遍历 3.map 遍历 4.for...of 遍历 5.filter 遍历 6.some 遍历 7.keys,va ...

  3. php中遍历一个数组,php中遍历数组的方法

    PHP中遍历数组有三种常用的方法: 一.使用for语句循环遍历数组: 二.使用foreach语句遍历数组: 三.联合使用list().each()和while循环遍历数组. 这三种方法中效率最高的是使 ...

  4. 遍历数组的方法和数组的遍历方法(3+10种)(上)

    文章目录 简介 遍历数组的方法 for循环遍历 特点: 使用: 输出: for in遍历 特点: 使用: 输出: 3. for of循环 特点: 使用: 输出: 简介 总所周知,遍历的方法有很多种,有 ...

  5. 遍历数组的方法和数组的遍历方法(3+10种)(下)

    文章目录 简介 数组的遍历方法 1. forEach() 说明: 使用: 输出: 2. map()映射遍历 说明: 使用: 输出: 3. filter()过滤器遍历 说明: 使用: 输出: 4. so ...

  6. PHP遍历数组的方法汇总

    今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一.foreach() foreach()是一个用来遍历数组中数据的最简单有效的方法. & ...

  7. 原生js和jquery 遍历数组区别(forEach和each区别)

    原生js和jquery 遍历数组区别(forEach和each区别) <script>var arr=[1,3,6,8,4];var obj={0:1,1:3,2:6,3:8,4:4};a ...

  8. php 遍历输出数组,php中数组怎么循环输出?遍历数组的方法介绍

    遍历数组中的所有元素是常用的一种操作,在遍历的过程中可以完成查询等功能.在我们日常生活中,如果想要去商场买一件衣服,就需要在商场中逛上一遍,看是否又想要的衣服,逛商场的过程我们就相当于遍历数组的操作. ...

  9. python遍历数组的方法小结

    这篇文章主要介绍了python遍历数组的方法,实例总结了两种Python遍历数组的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例总结了python遍历数组的方法.分享给大家供大家参考.具体分析 ...

最新文章

  1. 【 Verilog HDL 】正确的变量访问思路
  2. 【机器学习】数据挖掘实战:金融贷款分类模型和时间序列分析
  3. Nim游戏的一个扩展——51nod 1661 黑板上的游戏+LA 5059 Playing With Stones
  4. PS 利用置换滤镜制作动感水波字
  5. 如何成为一名合格的算法工程师?我们做了一次技能拆分…
  6. 405 not allowed 问题排查
  7. pygame游戏素材预处理
  8. linux强制安装rpm依赖包,Yum下载rpm包、不分析依赖关系强制安装
  9. bash shell参考文档
  10. FPGA可以转行数字IC验证吗?
  11. Qt删除文件和文件夹
  12. 【操作系统】操作系统的发展历程——手工阶段、批处理阶段、分时操作系统、实时操作系统
  13. linux http连接超时时间设置,Linux 下 HTTP连接超时
  14. 手机发起PPT课件文档直播实测效果
  15. 网络攻防环境的搭建--MacOs配置Vmnet1及Vmnet8
  16. Win10 RealSense L515 ORBSLAM2 配置全攻略
  17. [macOS]_[初级]_[关于程序签名时出现User interaction is not allowed的问题]
  18. mysql查看sql语句是否走索引
  19. LeetCode_2289_使数组按非递减顺序排列
  20. GAT解读graph attention network

热门文章

  1. 第四篇:mysql管理工具
  2. Java设计模式(十三):代理设计模式
  3. 多项式拟合缺点_曲线拟合方法的选择
  4. win服务器系统程序原因分析
  5. Java中console类的简单用法
  6. 【Java】多线程相关复习—— 线程的创建、名字、运行情况以及顺序控制(join方法) 【一】...
  7. 《深入理解JAVA虚拟机》——学习笔记
  8. sizeof之字节对齐
  9. ubuntu 14.04 no valid active connections found
  10. KISSY 库 demo