PHP 编程中常用 for、foreach、each()、list() 对数组进行遍历。

for 循环遍历数组

使用 for 循环遍历数组的一个例子如下:

$fruits = array("lemon", "orange", "banana", "apple");

for ($i=0; $i < count($fruits); $i++) {

echo current($fruits) . " ";

echo $fruits[$i] . "
";

}?>

以上程序的执行结果如下:

lemon lemon

lemon orange

lemon banana

lemon apple

从结果可知,这种使用 for 循环遍历数组的形式没有改变数组的内部指针。

foreach 遍历数组

示例如下:

$array = [0, 1, 2];

foreach ($array as &$val){ // 遍历数组

echo $val;

}

?>

运行以上程序的输出结果为:

012

再给出一个示例:

$array = [0, 1, 2];

foreach ($array as &$val){

var_dump(current($array)); // 遍历数组, 使用current()输出数组指针指向的当前单元的值

}

?>

在 PHP 7 中运行以上程序的输出结果为:

int(0) int(0) int(0)

说明 PHP 7 没有改变数组内部的指针。

而在 PHP 7 之前的版本中则会输出:

int(1) int(2) bool(false)

说明 PHP 7 之前的版本在进行 foreach 循环时会改变数组内部的指针。

在使用 foreach 循环遍历数组的时候,foreach 是对数组的备份进行操作,在循环内部修改数组不会对循环之外访问数组有影响。示例如下:

$arr = array(0, 1, 2);

foreach ($arr as $val){

$val = $val*2; // 元素值乘以2

}

print_r($arr);

?>

运行程序,输出结果是:

Array

(

[0] => 0

[1] => 1

[2] => 2

)

如果是按照引用循环,那么在循环内部对数组做的修改会影响数组本身。示例如下:

$arr = array(0, 1, 2);

foreach ($arr as &$val){

$val = $val*2; // 元素值乘以2

}

print_r($arr);

?>

运行以上程序的结果为:

Array

(

[0] => 0

[1] => 2

[2] => 4

)

each() 和 list() 函数

each() 函数返回数组中当前的键值并将数组指针向前移动。在执行 each() 之后,数组指针将停留在数组中的下一个元素或者当碰到数组结尾时停留在最后一个元素。如果要再用 each 遍历数组,就必须使用 reset()。

each() 的使用示例如下:

$info = array("三百博客", "PHP教程", "http://www.top300.cc/php/", "8年", "严长生");

$val1 = each($info); //指针向后移动一步

print_r($val1);

echo current($info) . "\n"; //当前指针指向值

$val2 = each($info);

print_r($val2);

echo current($info) . "\n";

?>

执行以上程序的结果如下:

Array

(

[1] => 三百博客

[value] => 三百博客

[0] => 0

[key] => 0

)

PHP教程

Array

(

[1] => PHP教程

[value] => PHP教程

[0] => 1

[key] => 1

)

http://www.top300.cc/php/

each() 函数和 list() 函数结合可以遍历数组,示例如下:

$info = array(

"website" => "三百博客",

"course" => "PHP教程",

"url" => "http://www.top300.cc/php/",

"age" => "8年",

"author" => "严长生"

);

while( list($key, $val) = each($info) ) {

echo "$key => $val\n";

}

?>

执行以上程序的结果为:

website => 三百博客

course => PHP教程

url => http://www.top300.cc/php/

age => 8年

author => 严长生

也可以使用 list() 将数组的值分别赋给变量,示例如下:

$info = array("三百博客", "PHP教程", "http://www.top300.cc/php/", "8年", "严长生");

list($website, $course, $url, $age, $author) = $info;

echo $website . "\n" . $course . "\n" . $url . "\n" . $age . "\n" . $author;

?>

执行以上程序的输出结果为:

三百博客

PHP教程

http://www.top300.cc/php/

8年

严长生

注意以下例子:

$info = array("三百博客", "PHP教程", "http://www.top300.cc/php/", "8年", "严长生");

list($arr[0], $arr[1], $arr[2]) = $info;

print_r($arr);

?>

在 PHP 5 中的输出结果是:

Array

(

[2] => http://www.top300.cc/php/

[1] => PHP教程

[0] => 三百博客

)

在 PHP 7 中执行以上程序,输出结果为:

Array

(

[0] => 三百博客

[1] => PHP教程

[2] => http://www.top300.cc/php/

)

PHP 7 改变了 list() 赋值的顺序,由原来的倒序赋值改成了正序赋值。

原文链接:PHP遍历数组

三百博客 版权所有,转载请注明出处。

php 页面遍历数组,PHP遍历数组相关推荐

  1. 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定

    四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...

  2. JSX列表渲染(五)——4种写法:基本写法 遍历写法 map遍历写法(常用-加工处理数组的每一项数据,最后形成一个新的数组) 列表遍历可以直接写到表达式中

    JSX列表渲染--4种写法:基本写法 & 遍历写法 & map遍历写法(常用-加工处理数组的每一项数据,最后形成一个新的数组) & 列表遍历可以直接写到表达式中 渲染多个元素 ...

  3. map遍历是否改变原数组

    遇到问题:将后端返回的数字(数字代表不同含义),展示在前端页面,用map的方法遍历将item值重新赋值,只展示的话是没有任何问题的:然后又需要将这个值以数字的形式返回给后端,这个时候就导致值已经变成了 ...

  4. thymeleaf笔记(一)使用thymeleaf实现对数组的遍历并展示

    使用thymeleaf实现对数组的遍历并展示 1.简介 ​ thymeleaf是一个在springboot框架中使用的模板引擎,用于替代jsp页面而发展出来的,因为有人觉得jsp页面比较落后,因此部分 ...

  5. python中遍历二维数组_python遍历二维数组-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 二 维 数组 5.2.1 二 ...

  6. php 遍历输出数组,php中数组怎么循环输出?遍历数组的方法介绍

    遍历数组中的所有元素是常用的一种操作,在遍历的过程中可以完成查询等功能.在我们日常生活中,如果想要去商场买一件衣服,就需要在商场中逛上一遍,看是否又想要的衣服,逛商场的过程我们就相当于遍历数组的操作. ...

  7. PHP数组foreach遍历输出例子详解

    通常我们对于数据遍历会使用到foreach来操作当然也有使用到while list each函数来实现了,但在方便面上来看foreach更简洁好用性能也非常的不错,下面本人整理了一款在开发应用中for ...

  8. vue 循环遍历list_vue使用map代替Aarry数组循环遍历的方法

    需求:根据主键id来找到对应的数组下标 原本的方法是使用for循环遍历该数组,变量 i 就是下标,问题在于,如果有多重for循环,就会导致性能大大下降,数据也容易出错 因此使用map,让数组(原本是l ...

  9. 元素均匀排列自动换行二维数组前端遍历

    1.元素均匀排列并自动换行 display:flex; flex-wrap:wrap; 2.getFiled();取一行,取多行的话用getFiled('id',true); 3.二维数组前端遍历: ...

最新文章

  1. [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)
  2. 【Kaidi安装问题】install_mkl.sh报错,没有数字签名
  3. SNMP功能开发简介 三 使用DEBUGMSG打印指定的信息
  4. Memcache工作原理总结
  5. linux下GPRS ppp拨号默认路由问题(存在eth0)
  6. CF1556E-Equilibrium【栈,树状数组】
  7. 【CodeForces - 514D】R2D2 and Droid Army(二分+滑动窗口ST表,或 尺取+单调队列或STLmultiset)
  8. 时间复杂度O(n^2)和O(nlog n)差距有多大?
  9. Kubernetes Ingress入门指南和实践练习
  10. clustered和nonclustered索引的区别
  11. 关于Xcode7中添加不了libresolv.dylib等类似库的问题
  12. 信贷违约风险预测(三)简单的特征工程
  13. 斐讯盒子T1_【YYF固件】无语音实用版刷机固件及教程分享
  14. 人体姿态估计综述 2020最全
  15. 川土微电子 | 隔离电源的辐射抑制设计参考(四)
  16. Java进阶篇之十五 ----- JDK1.8的Lambda、Stream和日期的使用详解(很详细)
  17. 分治算法以及经典例题
  18. Elsa-审批流实现
  19. 怎么用浏览器访问计算机文件共享,如何用ES文件浏览器完全共享电脑里的文件流程...
  20. 【PTA乙级】【1096 大美数 (15 分)】

热门文章

  1. 双高新技术企业招C++工程师一名~
  2. 苹果手机网页时间和PC端,安卓时间不同解决方法
  3. 为期将近两个月的视频剪辑工作要结束了,今天整理材料惊现总结一份
  4. TPC三次握手/四次握手
  5. tinymce富文本vue使用教程
  6. [正能量系列]失业的程序员(四)
  7. 怎么查看计算机当前用户和组,如何查看电脑硬盘的ID号与详细信息-电脑自学网...
  8. JDictSelectTag 字典标签用法
  9. 如何将文件存放在ftp服务器,ftp如何将文件上传到服务器上
  10. 极米h6和坚果n1pro区别,4k版极米h6和坚果n1选哪个好