VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP特定函数foreach遍历一二维数组

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

foreach有两种用法:

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

  1. foreach(arr_name as $value)   
  2. {      
  3.       statement;   
  4.  } 

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

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

  1. foreach(arr_name as $key => $value)   
  2.  {      //开源软件:phpfensi.com 
  3.         statement;     
  4. }  

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

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

  1. $myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); 
  2.  
  3. foreach($myArray as $val) { 
  4.     echo $val."<br />"
  5. //执行结果: 
  6. val1 
  7. val2 
  8. val3 

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

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

  1. $myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); 
  2. foreach($myArray as $key=>$val) { 
  3.     echo $key."=>".$val."<br />"
  4. //执行结果: 
  5. 1=>val1 
  6. 2=>val2 
  7. 3=>val3 

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

  1. $myArray=array
  2.     "1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"), 
  3.     "2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"), 
  4.     "3"=>array("31"=>"val31","32"=>"val32","33"=>"val33"
  5. ); 
  6.  
  7. echo "<ul>"
  8. foreach($myArray as $key=>$val) { 
  9.     echo "<li>".$key."</li>"
  10.     //判断$val的值是否是一个数组,如果是,则进入下层遍历 
  11.     if (is_array($val)) {      
  12.         echo "<ul>"
  13.             foreach($val as $key=>$val) { 
  14.             echo "<li>".$key."=>".$val."</li>"
  15.         } 
  16.         echo "</ul>"
  17.     } 
  18.  
  19. echo "</ul>"

执行结果:

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

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

  1. $a = array("1"=>"语文","2"=>"数学","3"=>"英语");  
  2. $b = array("1"=>"95","2"=>"99","3"=>"92");  
  3. foreach($a as $key=>$value){  
  4.     echo $value;  
  5.     echo $b[$key]."<br>"
  6. //执行结果: 
  7. 语文95 
  8. 数学99 
  9. 英语92 

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

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

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

  1. $a[1]="语文"
  2. $a[2]="数学"
  3. $a[3]="英语"

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

  1. echo $a[1]; 
  2. echo $a[2]; 
  3. echo $a[3]; 

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

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

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

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


出处:http://www.phpfensi.com/php/20150408/9037.html


相关教程