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

foreach有两种用法:

一、

foreach(arr_name as $value)

{

statement;

}

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

二、

foreach(arr_name as $key => $value)

{

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($myArray as $val) {

echo $val."
";

}

执行结果:

val1

val2

val3

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

先看一个简单的一维数组:

 代码如下 复制代码
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");

foreach($myArray as $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($myArray as $key=>$val) {

echo "

".$key."";

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

if (is_array($val)) {

echo "

  • ";

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

echo "

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

}

echo "

";

}

}

echo "

";

执行结果:

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

    再通过一个实例解惑:

     代码如下 复制代码
    $a = array("1"=>"语文","2"=>"数学","3"=>"英语");

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

    foreach($a as $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只能遍历一二维数组了,如果是三维数组我们需要进行递归操作了。

php each函数二维数组,PHP特定函数foreach遍历一二维数组相关推荐

  1. 数组的属性、foreach遍历、交错数组与矩形数组的区别

    本次课我们要学习数组的属性.foreach的用法.我上节课提到的交错数组,我会通过多个例子的演示讲解让你们理解交错数组定义已经与规则的二维数组(矩形数组)的区别加深理解,下一节我们还将学习数组的常用方 ...

  2. php foreach遍历多维数组长度,PHP foreach遍历多维数组实现方式

    PHP foreach遍历多维数组实现方式 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  PHP foreach遍历多维数组实现方式.txt ] (友情提示:右键 ...

  3. php7的foreach遍历数组,PHP中使用foreach遍历三维数组

    昨天写代码的时候遇到一个三维数组,突然不知道怎么遍历这个三维数组,后面经过研究才发现,三维数组可以使用双foreach遍历,现在就分享给大家. PHP代码: //首先声明一个三维数组或者自己从数据库里 ...

  4. php foreach遍历数组详解,PHP foreach遍历数组详解

    什么是PHP foreach? foreach 是一种遍历数组简便方法.foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误. PHP foreach两种语法 有 ...

  5. php遍历数组查询数据库,php如何遍历数据库查询数组

    PHP面试干货 1.进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一 ...

  6. php for调用数组元素,php中foreach语句如何用于数组元素

    php中除了for语句和while语句以外,还有用来处理数组循环的foreach语句,foreach语句是一个循环数组元素的语句,本篇文章就来给大家介绍关于php中foreach语句的用法. 我们先来 ...

  7. go 声明二维数组_一篇文章了解Go语言中数组Arrays的使用内幕

    概述 与其他编程语言类似,Go语言也有数组array.Go语言中,数组的行为和其他语言没有什么不同.Go语言中还有一个叫做切片slice的东西,它就像是对数组的引用.在本文中,我们将只研究数组. 定义 ...

  8. java 2维数据便利_计算机等级考试二级java数组辅导

    数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 注意: ...

  9. JS的组成-JS数组方法-JS函数-系统化学习

    JS Day01 什么是js的组成? ECMAScript(es) 其实就是js的规范(规则) DOM 文档对象模型 div span BOM 浏览器对象模型 JS的使用方式 行内样式的书写(不经常使 ...

最新文章

  1. 解读在校园招聘中人工智能常考的笔试题
  2. JSEnhancements.vsix
  3. Android开发遇到手机无法弹出Toast
  4. hive - 可优化的 10 个地方及详解
  5. java xml date_W3C XML 模式时间数据类型与java Date进行转换
  6. 【异常】INFO: TopologyManager: EndpointListener changed ...
  7. html按钮的下拉菜单,按钮下拉菜单
  8. 设置Panel的布局管理器为BorderLayout,分别向其中的每个区域加入一个按钮
  9. 第二章节 变量与数据类型
  10. 【转】EntityFramework之领域驱动设计实践(三)
  11. 蓝桥杯 C语言 试题 历届试题 高僧斗法
  12. 基于物品的协同过滤算法实现图书推荐系统
  13. 蓝桥杯 java 时间显示
  14. 将Tomcat注册成系统服务,并且设置成系统自启动项
  15. win7 计算机 只有硬盘分区,电脑只有一个C盘怎么办?一招教你正确分区!-win7磁盘分区...
  16. 第一台计算机英语怎么说,世界第一台计算机英文缩写名为
  17. ArcMap模型:批量导出shp
  18. 汇编语言_实验12_编写0号中断处理程序
  19. 编写一个C程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符.
  20. LIGGGHTS笔记3——Input Script

热门文章

  1. 用了这么久的数据库连接池,你知道原理吗?
  2. 技术管理者必备管理模板
  3. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(1)
  4. HTML5在手机端实现视频全屏展示
  5. Go Little Book - 第三章 - 字典 ,数组和切片
  6. 通过Method运行时内存布局hook方法探索
  7. vmware workstation 关于三种网络连接方式的理解
  8. 【浅谈DOM事件的优化】
  9. TechED2010与我(一)—— 初来乍到
  10. ZZULIOJ 1099: 角谷猜想(多实例测试)