foreach()
PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。
语法:
foreach (array as $value) statement // 或者: foreach (array as $key => $value) statement
上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。
例子:
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $age) { echo $age,'<br />'; } ?>
运行该例子输出:
18 20 25
使用数组键值
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $key=>$age) { echo $key,': ',$age,'<br />'; } ?>
运行例子输出:
wang: 18 li: 20 zhang: 25
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,这意味着不需要在 foreach 循环之前调用 reset()。
foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。对返回的数组单元的修改也不会影响原数组(见下面例子),但 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $age) { $age = $age+10; echo $age,'<br />'; } // 输出原数组 print_r($arr_age); ?>
运行例子输出:
28 30 35 Array ( [wang] => 18 [li] => 20 [zhang] => 25 )
要在 foreach 中修改原数组元素,可以通过引用来实现,将上面的例子更改为:
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as &$age) { $age = $age+10; echo $age,'<br />'; } // 输出原数组 print_r($arr_age); ?>
运行例子输出:
18 20 25 Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
遍历多维数组
foreach 语法结构只能用于遍历一维数组,要遍历多维数组,一般是将 foreach 嵌套递归使用或者将原数组分割为一维数组再进行 foreach 遍历。
一二维数组混合的例子:
<?php $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,'<br />'; } } else { echo $age,'<br />'; } } ?>
对多维数组的遍历处理就要根据实际的数据结构而采取最合适的处理方式。
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]."<br />"; } ?>
也可以用 list() 和 each() 结合来遍历数组,但测试发现效率不如 foreach() 。
以上这篇PHP 数组遍历foreach语法结构及实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
问题内容: 我有一个数组: 我想使用一个foreach循环来替换(仅允许我设置数字: 能够显示相关数组值的和类 编辑 我希望将数据回显为: 非常感谢您的快速回复。StackOverflow令人震惊! 问题答案:
问题内容: 我有这个数组…如何打印每个文件路径和文件名?做这个的最好方式是什么? 问题答案: 使用无键循环 使用键循环 使用循环 是获取数组或对象快照的非常有用的功能。
本文向大家介绍PHP中使用foreach()遍历二维数组的简单实例,包括了PHP中使用foreach()遍历二维数组的简单实例的使用技巧和注意事项,需要的朋友参考一下 第一种类型 想用foreach()遍历整个二维数组: 输出结果是: 0=>linux服务器配置与管理 1=>Array 当然,其实我是想要所有具体内容,而不是输出array。。。 所以应该采用如下做法,加入一个判断语句: 则输出为:
问题内容: 我有一个json数组: 如何使用php遍历此数组? 问题答案: 如果需要关联数组,请将第二个函数参数设置为true 如果您需要关联数组,则某些版本的php需要true的第二个参数
本文向大家介绍C#使用foreach循环遍历数组完整实例,包括了C#使用foreach循环遍历数组完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用foreach循环遍历数组的方法。分享给大家供大家参考,具体如下: 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件
本文向大家介绍json的结构与遍历方法实例分析,包括了json的结构与遍历方法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了json的结构与遍历方法。分享给大家供大家参考,具体如下: 第一种json结构: 遍历的方法是: 第二种json结构: 遍历方法: PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用: 在线JSON代码检验、检验、美化、格式