PHP特定函数foreach遍历一二维数组

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."<br />";
}
执行结果:
val1
val2
val3

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

 代码如下 复制代码
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");
foreach($myArray as $key=>$val) {
    echo $key."=>".$val."<br />";
}
执行结果:
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 "<ul>";
foreach($myArray as $key=>$val) {
    echo "<li>".$key."</li>";
    //判断$val的值是否是一个数组,如果是,则进入下层遍历
    if (is_array($val)) {    
        echo "<ul>";
            foreach($val as $key=>$val) {
            echo "<li>".$key."=>".$val."</li>";
        }
        echo "</ul>";
    }
}
 
echo "</ul>";

执行结果:

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

 代码如下 复制代码
$a = array("1"=>"语文","2"=>"数学","3"=>"英语");
$b = array("1"=>"95","2"=>"99","3"=>"92");
foreach($a as $key=>$value){
    echo $value;
    echo $b[$key]."<br>";
}
执行结果:
语文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只能遍历一二维数组了,如果是三维数组我们需要进行递归操作了。

时间: 2024-10-25 22:09:34

PHP特定函数foreach遍历一二维数组的相关文章

PHP foreach遍历多维数组实现方式_php技巧

介绍 正常我们的foreach可以按顺序把一维数组里面每个 key => value 打印出来,但是如果是多维数组则需要循环在嵌套循环,或则递归实现,但是这些方式都不够灵活,因为在不确定该数组是几维的情况下,不可能永无止境的嵌套循环,如果采用递归到可以解决,但是如果只想使用foreach全部循环出来该如何实现? 实现方式 一采用PHP本身自带的迭代器类 RecursiveIteratorIterator $test_arr = array(1,2,3,array(4,'aa'=>5,6,arr

PHP中使用foreach()遍历二维数组的简单实例_php技巧

第一种类型 想用foreach()遍历整个二维数组: $team = array('lk','ok'); $book = array('linux服务器配置与管理',$team); foreach($book as $k=>$val) //for $book each $value( as ) echo $k.'=>'.$val.''; 输出结果是: 0=>linux服务器配置与管理 1=>Array 当然,其实我是想要所有具体内容,而不是输出array... 所以应该采用如下做法

php 遍历多维数组方法

在php遍历数组有三个函数foreach.each.list & each下面我们看它们是如何遍历多维数组的. 先看一个遍历二维数组  代码如下 复制代码 <?php  $sports = array(      'football' => 'good',      'swimming' => 'very well',      'running'  => 'not good'      );        foreach ($sports as $key => $v

php foreach输出二维数组

/* *标题:foreach输出二维数组 *函数:foreach() *创建时间:2015年5月16日 *注意事项: */ //输出一维数组 $array1 = array(); $array1[0] = '楚留香'; $array1[1] = '胡铁花'; $array1[2] = '姬冰燕'; //只有value的情况,也就是只输出值. foreach ($array1 as $value) { echo $value.' '; } echo ' '; //输出键值对 foreach ($a

php 遍历二维数组与多维数组代码

 代码如下 复制代码 function arr_foreach ($arr) {  if (!is_array ($arr)) {   return false;  }  foreach ($arr as $key => $val ) {   if (is_array ($val)) {    arr_foreach ($val);   } else {    echo $val.'<br/>';   }  } }   $arr1 = array (1=>array(11,12,1

PHP递归遍历多维数组实现无限分类的方法_php技巧

本文实例讲述了PHP递归遍历多维数组实现无限分类的方法.分享给大家供大家参考,具体如下: <?php //$data[]=array('id'=>1,'parentid'=>0,'name'=>'中国','img'=>'52091199'); $data[]=array('id'=>1,'parentid'=>0,'name'=>'中国'); $data[]=array('id'=>2,'parentid'=>0,'name'=>'美国')

php实现遍历多维数组的方法_php技巧

本文实例讲述了php实现遍历多维数组的方法.分享给大家供大家参考,具体如下: $a=array('fruits'=>array('a'=>'orange','b'=>'grape',c=>'apple'), 'numbers'=>array(1,2,3,4,5,6), 'holes'=>array('first',5=>'second','third') ); //第一种: foreach($a as $list=>$things){ if(is_array

遍历多维数组(Traverse Multidimensioned Arrays)

分别使用下标和指针遍历二维数组. 使用指针遍历 #include <iostream> using namespace std; int main() { int ia[3][4] = { // 3 个元素,每个元素是一个有4 个int 元素的数组 {0, 1, 2, 3} , // 0 行的初始化列表 {4, 5, 6, 7} , // 1 行的初始化列表 {8, 9, 10, 11} // 2 行的初始化列表 }; int (*p)[4]; for (p = ia; p != ia + 3

php递归遍历多维数组的方法_php技巧

本文实例讲述了php递归遍历多维数组的方法.分享给大家供大家参考.具体如下: <?php function get_array_elems($arrResult, $where="array"){ while(list($key,$value)=each($arrResult)){ if (is_array($value)){ get_array_elems($value, $where."[$key]"); } else { for ($i=0; $i<