您好,欢迎访问一九零五行业门户网

php数组的遍历讲解 for foreach list each key_PHP教程

php数组的遍历讲解
本文主要讲解for,foreach,list,each,key,指针操作相关函数,array_flip ,array_reverse,array_walks等函数的对数组的遍历
1.for循环遍历数组
for循环是几乎所有语言都可以用的一种遍历数组的方式,但是在php语言中for循环不是遍历数组的首选
一下是for循环实现数组遍历的示例代码
注意:使用for遍历数组存在以下限制:
a  所遍历的数组必须是索引数组(即下标为数字的数组),不能是关联数组(下标为字符串的数组)
如下列代码
'google','email'=>'gmail','webbrowser'=>'chrome','phone'=>'android');
for($i=1;$i
echo $arrgoogle[$i];
}
?>
在运行时会报错,类似于这样的错误notice: undefined offset: 1 in d:/phpnow/htdocs/holiday/php_array_visit_summary.php on line 13这说明for不适合用于关联数组的遍历
b,for遍历的数组既要满足是索引数组,同时下标又要是连续的整数,如果不是连续的整数则会发生提示
如下列代码
'google',5=>'chrome',7=>'android',9=>'youtube',12=>'gmail');
//print_r($array);
for($i=0;$iecho $array[$i],
;
}
?>
这种情况下也会发生提示类似于notice: undefined offset: 2 in d:/phpnow/htdocs/holiday/php_array_visit_summary.php on line 10 因此for循环遍历数组必须是索引数组而且下标必须是连续的。
2.foreach遍历数组
foreach可以说是php语言单独为遍历数组提供的一种方法(其他语言也可能有),这种遍历方法是php遍历数组的首选
foreach遍历时可以是这样的foreach($array as $key=>$value)包含键值元素  也可以是foreach($array as $value)只包含值
foreach($array as $value)示例代码
'google','email'=>'gmail','webbrowser'=>'chrome','phone'=>'android');
//只包含值
foreach($arrgoogle as $value){
echo $value.'
';
}
?>
foreach($array as $key=>$value)的代码示例
'google','email'=>'gmail','webbrowser'=>'chrome','phone'=>'android');
foreach($arrgoogle as $key=>$value){
echo '第',($key+1),'个数组元素的值是',$value,'
';
}
?>
注意以上的$value和$key都是自定义的变量,因此可以根据需要更改成符合自己风格的命名方式
3.使用list函数遍历数组
list()函数是将数组中的值赋给变量 
标准语法:void list ( mixed varname, mixed ... )
用list实现对数组的遍历代码
'google','email'=>'gmail','webbrowser'=>'chrome','phone'=>'android');//使用关联数组不行
$arrgoogle=array('google','gmail','chrome','android');
list($brand,$email,$webbrowser,$phone)=$arrgoogle;
echo $brand,$email,$webbrowser,$phone;
?>
注意:
a  list函数所接受的数组只能是索引数组,不能是关联数组!如果是关联数组,则会出现类似 notice undefined offset提示
b  如果只是部分取出数组的值,只需 按照这样的写法即可,list(,,$chrome,)=$arrgoogle;这样我们就可以去除chrome的信息,但是注意一定要保证list参数与数组的元素个数相同(所取值前面的个数)
c list函数赋值按索引顺序赋值
4.each函数遍历数组
each函数返回输入数组的键值对
标准语法:array each(array input array)
返回值:返回4个值0,1,key,value;其中0和key包含键名,而1和value包含相应的数据
使用each遍历数组的示例代码如下:
注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为false
       开始的位置是第一个元素,每(正常)执行一次该函数,指针向后移到下一个地址
5.key()遍历数组
each是用来返回数组的键名
基本语法:mixed key ( array &array )
key函数遍历数组示例代码如下
'hebei','b'=>'anhui','c'=>'beijing','d'=>'guangdong','e'=>'shanghai');
//初始化一个索引数组   但是索引数组使用key返回的是空字符产
$arrcn=array('hebei','anhui','beijing','guangdong','shanghai');//key显示的是数组的字符串下标,如果为索引数组则为空字符串
//print_r($arrchina);
while($key=key($arrchina)){//对于关联数组使用key方法可以执行
echo $key,'
';
next($arrchina);
}
print_r($arrcn);//输出一下索引数组
while($keyname=key($arrcn)){//这里调用key函数赋值后为false,while条件不成立,不进行{}之间的操作
/*if(empty($keyname)){
print '该键名为空
';
}*/
/*if($keyname=''){
print '该键名为空
';
}*/
var_dump($keyname);
}
//验证对索引数组使用key函数的返回值赋值给变量这个表达式的布尔值
if(($keyname=key($arrcn))==false){
print 'false';
}
//对索引数组调用key函数对变量赋值
$keyname=key($arrcn);
next($arrcn);//将数组指针向后移动一位
next($arrcn);
next($arrcn);
next($arrcn);
next($arrcn);
$keyname=key($arrcn);
var_dump($keyname);//输出值和类型类型信息
//echo $keyname;
?>
注意:key函数的参数一般为关联数组,如果为索引数组那么就没有什么意义了
key函数不会推进指针移动,这里我们调用了next函数,next函数用来推进指针向后移动,下面就是next函数的介绍
6.使用对指针进行操作的函数遍历数组
a reset函数  用于将指针设置回数组的初始位置,如果需要在一个脚本中多次查看和处理一个数组,就可以使用这个函数,另外这个函数还常用于排序的结束
b.current() 函数
返回当前当前数组指针位置的值,该函数不对指针进行移动操作,需要注意这个特点
c end 将指针移到数组的最后位置,返回目标位置的值
d next 将指针向后移动一次并返回目标位置的数组值,如果当前位置为数组的最后位置,返回false
e prev 将指针向前移动一次,并返回目标位置的数组值,如果当前位置是数组起始位置,则返回false
7.array_reverse()
该函数是将目标数组元素逆置,如果设置preserver_key为true,则保持原先的映射,否则重置映射
该函数使用示例代码如下
8.array_flip()
该函数是将数组的键和值互换
下面是该函数的使用代码
'sogou','child'=>'chinaren','search'=>'sogou');//如果存在值相同调用array_flip()函数会按照顺序将相同的值覆盖掉,如'son'=>'sogou'和'search'=>'sogou'值相同,使用array_flip()函数后,为[sogou] => search
//对两个数组调用array_flip()函数进行操作并输出,都可以正常输出
print_r(array_flip($arrgoogle));
print '
$arrsogou未进行array_flip()函数操作之前的数组';
print_r($arrsohu);
print '
$arrsogou未进行array_flip()函数操作之后的数组';
print_r(array_flip($arrsohu));
?>
9.array_walk函数
boolean array_walk(array input_array,callback function[,mixed userdata])
array_walk()函数是将参数数组array_input中的每个元素传递给自定义的函数function 中,进行相关的操作,如果想真正修改array_input的键值对则需要将每个键值对作为引用传递给函数
自定义函数必须接受两个输入参数,第一个是数组的当前值,第二个是数组的当前键,,如果调用array_walk函数给出第三个值userdata,他的第三个值将作为第三个参数传递给自定义函数。
http://www.bkjia.com/phpjc/477318.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/477318.htmltecharticlephp数组的遍历讲解 本文主要讲解for,foreach,list,each,key,指针操作相关函数,array_flip ,array_reverse,array_walks等函数的对数组的遍历 1.for循...
其它类似信息

推荐信息