后端开发|php教程
foreach,循环,数组,进行,何用
后端开发-php教程
foreach 语法结构用于遍历数组。
天之刃服务端源码,vscode怎么添加类,ubuntu安装终止,tomcat初始网址,sqlite是否有多张表,微信节日插件,前端组件化框架有什么区别,裁判文书网爬虫登陆,c php框架,哈尔滨seo网站优化,可视化建站网站源码,简单交互式网页代码,html管理模板下载lzw
foreach()
电脑维护网站源码,ubuntu 大写键显示,黑色有脚的爬虫,php xmp,快照seo排名lzw
PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。
汽车维护源码 vc,vscode直接运行不对,树莓派3 ubuntu,tomcat 设置成服务,sqlite 声明函数,网页设计规范,phpcms数据库操作函数,云主机能不能架设mc服务器,bootstrap分页插件参数,week前端框架,外星爬虫族,php 模拟表单提交,360排名seo,springboot域登录,二维码网站生成器,网页页面旋转,织梦安装模板文件,扁平化的后台管理系统,jsp页面排版,管理系统源码下载,禾匠商城小程序数据库配置lzw
语法:
foreach (array as $value) statement// 或者:foreach (array as $key => $value) statement
上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。
例子:
18, "li"=>20, "zhang"=>25);foreach ($arr_age as $age) { echo $age,
;}?>
运行该例子输出:
182025
使用数组键值
18, "li"=>20, "zhang"=>25);foreach ($arr_age as $key=>$age) { echo $key,: ,$age,
;}?>
运行例子输出:
wang: 18li: 20zhang: 25
提示
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,这意味着不需要在 foreach 循环之前调用 reset()。
foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。对返回的数组单元的修改也不会影响原数组(见下面例子),但 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。
18, "li"=>20, "zhang"=>25);foreach ($arr_age as $age) { $age = $age+10; echo $age,
;}// 输出原数组print_r($arr_age);?>
运行例子输出:
283035Array ( [wang] => 18 [li] => 20 [zhang] => 25 )
要在 foreach 中修改原数组元素,可以通过引用来实现,将上面的例子更改为:
18, "li"=>20, "zhang"=>25);foreach ($arr_age as &$age) { $age = $age+10; echo $age,
;}// 输出原数组print_r($arr_age);?>
运行例子输出:
182025Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
遍历多维数组
foreach 语法结构只能用于遍历一维数组,要遍历多维数组,一般是将 foreach 嵌套递归使用或者将原数组分割为一维数组再进行 foreach 遍历。
一二维数组混合的例子:
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小张", "age"=>25));foreach ($arr_age as $age) { if(is_array($age)){ foreach ( $age as $detail) { echo $detail,
; } } else { echo $age,
; }}?>
运行该例子输出:
1820小张25
对多维数组的遍历处理就要根据实际的数据结构而采取最合适的处理方式。
延伸预读
PHP 数组是通过哈希表(HashTable)表实现的,因此 foreach 遍历数组时是依据元素添加的先后顺序来进行的。如果想按照索引大小遍历,应该使用 for() 循环遍历。
for() 循环遍历数组
如果是操作连续键值的数组,也可以采用 for() 循环来遍历数组:
<?php$arr_age = array(18, 20, 25);$num = count($arr_age);for($i = 0; $i < $num; $i++){ echo $arr_age[$i]."
";}?>
运行例子输出如下:
182025
提示
也可以用 list() 和 each() 结合来遍历数组,但测试发现效率不如 foreach() 。
//使用array()语句结构将联系人列表中所有数据声明为一个二维数组,默认下标是顺序数字索引 $contact1 = array( //定义外层数组 array(1,高某,A公司,北京市,(010)987654321,gm@),//子数组1 array(2,洛某,B公司,上海市,(021)123456789,lm@),//子数组2 array(3,峰某,C公司,天津市,(022)24680246,fm@), //子数组3 array(4,书某,D公司,重庆市,(023)13579135,sm@)//子数组4 ); //以HTML表格的形式输出二维数组中的每个元素 echo
;$contact1 = array( //定义外层数组 array(1,高某,A公司,北京市,(010)987654321,gm@),//子数组1 array(2,洛某,B公司,上海市,(021)123456789,lm@),//子数组2 array(3,峰某,C公司,天津市,(022)24680246,fm@), //子数组3 array(4,书某,D公司,重庆市,(023)13579135,sm@)//子数组4);foreach($contact1 as $key=>$s){//echo $key;//以每个数组的键值作为表名 foreach($s as $row){ echo $row; }}