PHP 数组遍历foreach语法结构及实例
来源: 阅读:662 次 日期:2016-08-17 15:06:10
温馨提示: 小编为您整理了“PHP 数组遍历foreach语法结构及实例”,方便广大网友查阅!

下面小编就为大家带来一篇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语法结构及实例就是小编分享给大家的全部内容了,希望能给大家一个参考

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map