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 intval的测试代码发现问题
Jul 27 PHP
MySQL连接数超过限制的解决方法
Jul 17 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
php数组一对一替换实现代码
Aug 31 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
php实现aes加密类分享
Feb 16 PHP
50个PHP程序性能优化的方法
Jun 02 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
php 数组字符串搜索array_search技巧
Jul 05 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
PHP解决高并发问题
Apr 01 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备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
JavaScript中this详解
2015/09/01 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
谈谈JS中的!!
2017/12/07 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
Python通过poll实现异步IO的方法
2015/06/04 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
制定岗位职责的原则
2013/11/08 职场文书
群教个人对照检查材料
2014/08/20 职场文书
技术股份合作协议书
2014/10/05 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书