博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
foreach 语法结构以及扩展
阅读量:5064 次
发布时间:2019-06-12

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

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

二:语法

foreach (array as $value)    statement// 或者:foreach (array as $key => $value)    statement

上述语法,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key,可以看作是第一种的扩展。

三:用法实例

1)

18, "li"=>20, "zhang"=>25);foreach ($arr_age as $age) { echo $age,'
';}?>//结果182025

2)

18, "li"=>20, "zhang"=>25);foreach ($arr_age as $key=>$age) { echo $key,': ',$age,'
';}?>//结果wang: 18li: 20zhang: 25

3)引用

foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。对返回的数组单元的修改也不会影响原数组(见下面例子),但 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。
要在 foreach 中修改原数组元素,可以通过引用来实现 & 符号

18, "li"=>20, "zhang"=>25);foreach ($arr_age as $age) { $age = $age+10; echo $age,'
';}// 输出原数组print_r($arr_age);?>//原数组Array ( [wang] => 18 [li] => 20 [zhang] => 25 ) //加了引用后
18, "li"=>20, "zhang"=>25);foreach ($arr_age as &$age) { $age = $age+10; echo $age,'
';}// 输出原数组print_r($arr_age);?>//原数组Array ( [wang] => 28 [li] => 30 [zhang] => 35 )

4)遍历多维数组

foreach 语法结构只能用于遍历一维数组,要遍历多维数组,一般是将 foreach 嵌套递归使用或者将原数组分割为一维数组再进行 foreach 遍历

//遍历2维数组 $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,'
'; }}?>

5)知识延伸

PHP 数组是通过哈希表(HashTable)表实现的,因此 foreach 遍历数组时是依据元素添加的先后顺序来进行的。如果想按照索引大小遍历,应该使用 for() 循环遍历。

list() 和 each() 结合来遍历数组,但测试发现效率不如 foreach() 。

  1. :打印输出数组内容及结构
  2. :检测变量是否是数组

 

转载于:https://www.cnblogs.com/lovelgx/articles/6085776.html

你可能感兴趣的文章
redis集群如何清理前缀相同的key
查看>>
redis7--hash set的操作
查看>>
20.字典
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
oracle用户锁定
查看>>
(转)盒子概念和DiV布局
查看>>
Android快速实现二维码扫描--Zxing
查看>>
获取元素
查看>>
nginx+lighttpd+memcache+mysql配置与调试
查看>>
ubuntu12.04 启动apache2 对.htaccess 的支持
查看>>
proxy写监听方法,实现响应式
查看>>
前端工具----iconfont
查看>>
Azure Site Recovery 通过一键式流程将虚拟机故障转移至 Azure虚拟机
查看>>
Hello China操作系统STM32移植指南(一)
查看>>
cocos2dx CCEditBox
查看>>
VC++2012编程演练数据结构《8》回溯法解决迷宫问题
查看>>
第一阶段冲刺06
查看>>
WIN下修改host文件并立即生效
查看>>
十个免费的 Web 压力测试工具
查看>>
ckeditor 粘贴后去除html标签
查看>>