PHP 数组遍历foreach语法结构及实例

 更新时间:2016年06月13日 11:41:32   投稿:jingxian   我要评论
下面小编就为大家带来一篇PHP 数组遍历foreach语法结构及实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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语法结构及实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持澳门金沙网上娱乐。

相关文章

  • php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中

    php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中

    本文章向大家介绍php遍历目录,生成目录下每个文件的md5值并写入到结果文件中,需要的朋友可以参考下
    2016-12-12
  • thinkPHP5框架设置404、403等http状态页面的方法

    thinkPHP5框架设置404、403等http状态页面的方法

    这篇文章主要介绍了thinkPHP5框架设置404、403等http状态页面的方法,结合实例形式分析了thinkPHP5框架设置404页面的相关配置、视图显示页面及控制器调用相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Laravel框架实现model层的增删改查(CURD)操作示例

    Laravel框架实现model层的增删改查(CURD)操作示例

    这篇文章主要介绍了Laravel框架实现model层的增删改查(CURD)操作,结合实例形式分析了Laravel框架模型model层进行金沙国际官网的增删改查操作具体实现技巧,需要的朋友可以参考下
    2018-05-05
  • php中使用array_filter()函数过滤空数组的实现代码

    php中使用array_filter()函数过滤空数组的实现代码

    这篇文章主要介绍了php中使用array_filter()函数过滤空数组的实现代码,这是浏览PHP手册时无意发意的一个有意思的array_filter()函数用法,需要的朋友可以参考下
    2014-08-08
  • php设置session值和cookies的学习示例

    php设置session值和cookies的学习示例

    一直没弄懂Session,cookies什么的登陆验证到底是怎么回事,昨天分别用HttpURLConnection和HttpClient两个类来实验了一下,基本弄明白了Session验证登陆的机制和这两个类的区别。现在分享给大家
    2014-03-03
  • php顺序查找和二分查找示例

    php顺序查找和二分查找示例

    这篇文章主要介绍了php顺序查找和二分查找示例,需要的朋友可以参考下
    2014-03-03
  • PHP大批量插入金沙国际官网的3种方法和速度对比

    PHP大批量插入金沙国际官网的3种方法和速度对比

    这篇文章主要介绍了PHP大批量插入金沙国际官网的3种方法和速度对比,3种方法分别使用普通insert语句、insert into语句和事务提交,需要的朋友可以参考下
    2014-07-07
  • php制作的简单验证码识别代码

    php制作的简单验证码识别代码

    近期研究一些突破验证码方面的知识,记录下来。一方面算是对这几天学习知识的总结帮助自己理解;另一方面希望对研究这方面的技术同学有所帮助;另外也希望引起网站管理者的注意,在提供验证码时多些考虑进去。由于刚刚接触这方面的知识,理解比较浅显,有错误再所难免
    2016-01-01
  • laravel 出现command not found问题的解决方案

    laravel 出现command not found问题的解决方案

    今天小编就为大家分享一篇laravel 出现command not found问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • php出租房数据管理及搜索页面

    php出租房数据管理及搜索页面

    这篇文章主要为大家详细介绍了php出租房数据管理及搜索页面的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05

最新评论