PHP 数组遍历 foreach 语法结构
发布日期:2021-11-03 16:26:27 浏览次数:1 分类:技术文章

本文共 2928 字,大约阅读时间需要 9 分钟。

来源:http://www.cnblogs.com/keta/p/6117237.html

foreach 语法结构用于遍历数组。

foreach()

 foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。

语法:

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() 循环来遍历数组:

";}?>

运行例子输出如下:

182025

提示

也可以用 list() 和 each() 结合来遍历数组,但发现效率不如 foreach() 。

 

//使用array()语句结构将联系人列表中所有数据声明为一个二维数组,默认下标是顺序数字索引    $contact1 = array(                                             //定义外层数组 array(1,'高某','A公司','北京市','(010)987654321','gm@Linux.com'),//子数组1 array(2,'洛某','B公司','上海市','(021)123456789','lm@apache.com'),//子数组2 array(3,'峰某','C公司','天津市','(022)24680246','fm@mysql.com'), //子数组3 array(4,'书某','D公司','重庆市','(023)13579135','sm@php.com') //子数组4 ); //以HTML表格的形式输出二维数组中的每个元素 echo '
'; //使用内层循环遍历数组$contact1 中 子数组的每个元素,使用count()函数控制循环次数 for($col=0;$col
'.$contact1[$row][$col].''; } echo ''; } echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; //使用双层for语句嵌套二维数组$contact1,以HTML表格的形式输出 //使用外层循环遍历数组$contact1中的行 for($row=0;$row

联系人列表

编号 姓名 公司 地址 电话 EMALL
'; $contact1 = array( //定义外层数组 array(1,'高某','A公司','北京市','(010)987654321','gm@Linux.com'),//子数组1 array(2,'洛某','B公司','上海市','(021)123456789','lm@apache.com'),//子数组2 array(3,'峰某','C公司','天津市','(022)24680246','fm@mysql.com'), //子数组3 array(4,'书某','D公司','重庆市','(023)13579135','sm@php.com') //子数组4 ); foreach($contact1 as $key=>$s){ //echo $key;//以每个数组的键值作为表名 foreach($s as $row){ echo $row; } }

转载地址:https://blog.csdn.net/whulovely/article/details/68064274 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PHP常量详解:define和const的区别
下一篇:html中隐藏域hidden的作用介绍及使用示例

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月31日 22时51分27秒