PHP中的函数-- foreach()的用法详解


Posted in PHP onJune 24, 2013

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;
}
?>

PHP 相关文章推荐
PHP 组件化编程技巧
Jun 06 PHP
php win下Socket方式发邮件类
Aug 21 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
php 强制下载文件实现代码
Oct 28 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
php如何实现只替换一次或N次
Oct 29 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 #PHP
PHP错误提示的关闭方法详解
Jun 23 #PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 #PHP
关于zend studio 出现乱码问题的总结
Jun 23 #PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 #PHP
PHP获取MSN好友列表类的实现代码
Jun 23 #PHP
使用php统计字符串中中英文字符的个数
Jun 23 #PHP
You might like
php无限极分类递归排序实现方法
2014/11/11 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
react 应用多入口配置及实践总结
2018/10/17 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
python 实现视频 图像帧提取
2019/12/10 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
找到不普通的东西:Bonanza
2016/10/20 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
Linux Interview Questions For software testers
2012/06/02 面试题
谢师宴家长答谢词
2015/09/30 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android