foreach循环遍历二维数组PHP,PHP特定函数foreach遍历一二维数组-程序员宅基地

技术标签: foreach循环遍历二维数组PHP  

foreach遍历数组的好是可以不知道数组的长度从而读出数组的key,name出来了,在php的foreach中有两种方法,arr_name as $value 和arr_name as $key => $value了,这个是针对不同维数的数组的哦,下面来一起来看看吧.

foreach有两种用法:

一、第一种用法代码如下:

foreach(arr_nameas$value)

{

statement;

}

解析:arr_name是要遍历的数组名,每次循环,arr_name数组当前元素的值都被赋给$value,而且数组内部下标也要下移一个,也就是说下次循环得到的将是下一个元素

二、第二种用法代码如下:

foreach(arr_nameas$key=>$value)

{      //开源软件:phpfensi.com

statement;

}

解析:与第一个的不同是,这个除了吧当前元素的值赋给$value外,每次循环当前元素的键值也会被赋给$key,键值可能是下标或字符串。如row[0]=1中的"0”,row[id]="001"中的"id”.其中0与id都是键值.

先来看第一个语句,这个语句比较简单,array_expression指的是一个数组表达式,as $val语句将顺序取得该数组的值并保存到$val变量中,此种方法只能取得数组内的值,而不能取得数组的下标索引值,例如如下代码:

$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");

foreach($myArrayas$val) {

echo$val."
";

}

//执行结果:

val1

val2

val3

再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到元素的索引值,并保存到$key变量中,如果数组的索引值未经过人工设定,则返回系统默认的设定值.

先看一个简单的一维数组,代码如下:

$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");

foreach($myArrayas$key=>$val) {

echo$key."=>".$val."
";

}

//执行结果:

1=>val1

2=>val2

3=>val3

接下来我们再来看一个复杂一点的二维数组遍历,程序如下:

$myArray=array(

"1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"),

"2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"),

"3"=>array("31"=>"val31","32"=>"val32","33"=>"val33")

);

echo"

  • ";

foreach($myArrayas$key=>$val) {

echo"

".$key."";

//判断$val的值是否是一个数组,如果是,则进入下层遍历

if(is_array($val)) {

echo"

  • ";

foreach($valas$key=>$val) {

echo"

".$key."=>".$val."";

}

echo"

";

}

}

echo"

";

执行结果:

  • 是 标签,作用是显示个实心小圆点和空心小圆点,由于上面的是一个二维数组,在第一次遍历后所得到的$val值将是一个数组,所以我在遍历中加了一个判断,以便进行二层数组遍历.

    再通过一个实例解惑,代码如下:

    $a=array("1"=>"语文","2"=>"数学","3"=>"英语");

    $b=array("1"=>"95","2"=>"99","3"=>"92");

    foreach($aas$key=>$value){

    echo$value;

    echo$b[$key]."
    ";

    }

    //执行结果:

    语文95

    数学99

    英语92

    问题是为什么输出数组$b中的值要用$b[$key]而不是$b[$value]? why? 代码如下:

    $a = array("1"=>"语文","2"=>"数学","3"=>"英语");

    上面这个和下面这个是完全一样的.

    $a[1]="语文";

    $a[2]="数学";

    $a[3]="英语";

    我们输出上面的数组元素是怎么输出的呢?肯定是:

    echo$a[1];

    echo$a[2];

    echo$a[3];

    对不对?简单说foreach 它的格式是这样的:

    foreach(数组名 as 下标=>值)

    下标也就是上面的$a[1],这里的1就是数组的下标,到这你应该明白了,为什么是$a[$key]这样输出.

    好了到这里关于php foreach就介绍完了,foreach只能遍历一二维数组了,如果是三维数组我们需要进行递归操作了.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39550486/article/details/115935360

智能推荐

视频教程-微信小程序支付java-Java-程序员宅基地

文章浏览阅读354次。微信小程序支付java 我是一名java高级开发工程师,已有七年的工作经验,..._微信小程序支付教学视频

HarmonyOS Next从入门到精通实战精品课

Canvas完成矩形的绘制;华为闹钟的订阅和取消;华为闹钟的基本绘制;华为闹钟的时针-分针-秒针的绘制;华为闹钟的任务列表的样式;关于State的状态更新的须知;关于样式的简单介绍;关于vp和fp的介绍;知乎数据的真实的渲染;实现底部组件的封装;华为闹钟的添加闹钟;完成知乎小案例的UI布局;ForEach的商品列表案例;ForEach的商品列表的Grid布局;ForEach的key的一个简单介绍;Watch的刷题案例-做题的思路;State嵌套更新的实现方式;你画我猜的签字板实现;

vue2实现复制粘贴功能

【代码】vue2实现复制粘贴功能。

SpringBoot引入Layui样式总是出现404

本文主要介绍的是在项目开发中SrpingBoot引入Layui样式出现404的解决方案

STM32与Proteus的串口仿真详细教程与源程序

解决了STM32的Proteus串口收发问题。

深入理解C语言中的 extern`和 static

extern关键字用于声明一个变量或函数,表示其定义在另一个文件或本文件的其他位置。使用extern可以在多个文件之间共享全局变量或函数。static关键字用于声明变量或函数的作用域为仅限于定义它们的文件,同时保持它们的值在函数调用之间持久存在。理解并正确使用extern和static关键字对于管理大型C语言项目中的变量和函数作用域、链接属性和生命周期至关重要。希望这篇文章能帮助你更好地掌握这些概念。

随便推点

VUE3与Uniapp 四 (Class变量和内联样式)

【代码】VUE3与Uniapp 三 (Class变量和内联样式)

前端打包过大如何解决?

前端开发完毕部署到线上是,执行npm run build。当打包过大时,部署到服务端后加载缓慢,如何优化?前端打包成gzip,用new CompressionWebpackPlugin来压缩。服务端nginx设置。我们可以通过执行npm run analyze。可以看到各个包文件大小的区别。当打包过大时,通过压缩gzip的方式,可以看个开始和打包和压缩的大小。

c语言上机入门实验十,C语言入门学习-C上机实验三要求-程序员宅基地

文章浏览阅读1.2k次。2+ x3- x4 +…… -x2n + x2n+1……的值。当某项的绝对值小于10-6时终止。(当x为0.5时,和值为0.333334)【系统函数fabs(x)的功能是计算x的绝对值,前面需加math . h头文件】3.一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。编程计算:“它在第10次落地后,反弹多高”;“从第一次落下到第十次反弹,总共经过了多少米”。 (结果:..._入x,x>1,求以下数列之和,当某项绝对值小于10-6为止。

R语言实现PVAR(面板向量自回归模型)_pvar模型r语言-程序员宅基地

文章浏览阅读1.9w次,点赞48次,收藏173次。这次研究了一个问题,要用PVAR(面板向量自回归模型),在网上找的教程基本上都是Stata或者Eviews的教程,而鲜有R实现PVAR的教程,这里总结分享一下我摸索的PVAR用R实现的整个过程。..._pvar模型r语言

you2php镜像仓库,10-S2I镜像定制-程序员宅基地

文章浏览阅读209次。1.概述Source to Image流程为应用的容器化提供了一个标准,实现了自动化。OpenShift默认提供Java WildFly、PHP、Python、Ruby及Perl的S2I Builder镜像。但是现实中的需求是多样化的,特殊的应用构建环境需要用户定制S2I的Builder Image来满足。S2I Builder镜像从本质上来说也是一个普通的Docker镜像,只是在镜像中会加入S2..._php 生成s2i防伪码

matlab版大学物理学,MATLAB可视化大学物理学(第2版)-程序员宅基地

文章浏览阅读2.5k次。前言这是一本将大学基础物理和MATLAB相结合的教材。一、物理部分的构思物理部分分为14章,完全按照大学基础物理的内容顺序编排。与一般的大学物理教材相比,物理部前言这是一本将大学基础物理和MATLAB相结合的教材。一、 物理部分的构思物理部分分为14章,完全按照大学基础物理的内容顺序编排。与一般的大学物理教材相比,物理部分的构思有以下创意。1. 各章先列出大学基础物理的基本内容,将其作为主要线索..._matlab 物理学

推荐文章

热门文章

相关标签