20)PHP,数组的遍历

 

1 然后开始使用这2个函数和while循环结构来实现数组遍历:
2 形式:
3 reset($arr1);
4  while ( list ($key, $value ) = each( $arr1) )    //从数组$arr1中一次次取出元素,
5 //当each到数组最后的时候,就返回false,即此时循环结束
6 {
7 //这里,就可以对$key ,和$value进行操作了。
8 }

 

 

(1)foreach遍历

1 foreach( $arr   as   [ $key  => ] $value )    //$key可以称为键变量,$value可以称为值变量。
2 {
3 //这里就可以对$key  和 $value 进行所有可能的操作——因为他们就是一个变量
4 //$key 代表每次取得元素的下标,可能是数字,也可以能是字符串
5 //$value 代表每次取得元素的值,可能是各种类型。
6 //此循环结构会从数组的第一项一直遍历循环到最后一项,然后结束。
7 }

          那个中括号的内容可以省略

遍历的基本原理:

      每个数组,其内部都有一个“指针”,该指针决定了该数组当前取值的时候,取到的元素。

      foreach遍历过程中,都是依赖与该指针而进行的!

       举例:$arr1 = array(2=>1,  ‘dd’=>5,  1=>1.1,  “abc”,  0=>true)

              

指针除了负责foreach循环的位置设定之外,还有其他一些函数也依赖于该指针:

1 1, $v1 = current( $arr1);    //取得$arr1中当前指针所指向的元素的值,如果没有指向元素,则为false
2 
3 2, $v1 = key($arr1);     //取得$arr1中当前指针所指向的元素的下标,。。。。。false
4 
5 3, $v1 = next($arr1 );     //将指针移向“下一个元素”,然后取得该下一个元素的值;
6 
7 4, $v1 = prev($arr1);      //将指针移向“上一个元素”,然后取得该上一个元素的值
8 
9 5, $v1 = reset($arr1);     //将指针移向“第一个元素”,然后取得该元素的值——数组指针初始化

6, $v1 = end($arr1);       //将指针移向“最后一个元素”,然后取得该元素的值


7, $v1 = each($arr1);      //取得当前元素的下标和值,然后移动指针到下一个位置。

 

(2)for+   next   +reset遍历:

 

1 reset( $arr1 );    //重置数组,即:数组指针初始化,这里,返回的数据被“丢弃”了。
2 $len = count( $arr1);
3 for($i = 0;  $i < $len  $i++){
4 $key = key ($arr1 );        //下标
5 $value = current( $arr1 );    //6 //然后这里就可以对$key 和 $value进行任何作为变量的操作
7 next($arr1);//这里,移动指针到下一个元素(也同时丢弃了返回值)
8 }


**************************************************************************************************************************************
************************************************************************************************************************************
$v=array(12,13,14,'abc','fhskjf',43);
reset($v);
$length=count($v);
for($i=0;$i<$length;$i++){
echo key($v);
echo "\n";
next($v);
}

                               

 

 

(3)while   +each()   +list()  遍历

1 each()函数解释:
2 each()函数可以取得一个数组中的一个元素的下标和值,然后再放入一个新的数组中,并且指针后移一位。
3 该新的数组,有4个元素,但存储的是下标和值的“双份”,类似下述形式:
4 array(
5 1 => 取出来的值,
6 ‘value’ = >取出来的值,
7 0 = > 取出来的下标(键名),
8 ‘key’ => 取出来的下标(键名)
9 );

                                    

 1 list()函数解释:
 2 使用形式:
 3 list($v1, $v2, $v3,$v4 .... )= 数组$arr1;    
 4 其作用是:依次取得数组$arr1中下标为0,123, ....的元素的值,并一次性放入多个变量中(一一对应)
 5 即其相当于如下语句:
 6 $v1 = $arr1[0];
 7 $v2 = $arr1[1];
 8 $v3 = $arr1[2];
 9 $v4 = $arr1[3];
10 ..........
11 但是注意:只能实现这样的“从0开始的连续数字下标的元素的取值”(但并非要求数组的元素的顺序为同样的数字顺序)

 

1 然后开始使用这2个函数和while循环结构来实现数组遍历:
2 形式:
3 reset($arr1);
4  while ( list ($key, $value ) = each( $arr1) )    //从数组$arr1中一次次取出元素,
5 //当each到数组最后的时候,就返回false,即此时循环结束
6 {
7 //这里,就可以对$key ,和$value进行操作了。
8 }

 

posted @ 2017-08-08 18:55  小油菜1  阅读(315)  评论(0编辑  收藏  举报