php中数组遍历方法有很多种,如有:for,foreach,while(),list(),each()这些函数与方法都要我们在数组遍历中会用到的,下面给大家介绍一下。
1. 使用for语句循环遍历数组
a. 其它语言(只有这一种方式)
b. php中这种方式不是我们首选方式
c. 数组必须是索引数组,而且下标还必须是连续的 索引数组下标还可以不连序,数组还有关联数组)
代码如下 复制代码
/*
* 我们想要在遍历的过程中改变以下数组中某些元素的值
*/
$people = array(
array(’name’ => ‘kalle’, ’salt’ => 856412),
array(’name’ => ‘pierre’, ’salt’ => 215863)
);
for($i = 0; $i {
$people[$i]['salt'] = rand(000000, 999999);
}
?>
以上代码的问题,在于for的第二个表达式会导致代码执行很慢--因为每次循环时都要 计算一遍数组的长度。由于数组的长度始终不变,我们可以用一个中间变量来存储数组长度, 然后用这个变量作为for循环的第二个表达式。这样在循环的时候就可以直接使用该变量的值, 不用每次重新计算。 如下:
代码如下 复制代码
$people = array(
array(’name’ => ‘kalle’, ’salt’ => 856412),
array(’name’ => ‘pierre’, ’salt’ => 215863)
);
for($i = 0, $size = sizeof($people); $i {
$people[$i]['salt'] = rand(000000, 999999);
}
?>
2. 使用foreach语句循环遍历数组
foreach(数组变量 as 变量值){
循环体
}
a. 循环次数由数组的元素个数决定
b. 每一次循环都会将数组中的元素分别赋值给后面变量
foreach(数组变量 as 下标变量=> 值变量){
}
例子
代码如下 复制代码
foreach遍历3维数组
//foreach循环一个3维数组
/*
$biaoge=array(
市场部=>array(
array(1,gaomou1,jingli11,4000),
array(2,gaomou2,jingli22,4000),
array(3,gaomou3,jingli33,4000)
),
客服部=>array(
array(1,gao1,li11,4000),
array(2,gao2,li22,4000),
array(3,gao3,li33,4000)
),
业务部=>array(
array(1,mou1,jing11,4000),
array(2,mou2,jing22,4000),
array(3,mou3,jing33,4000)
)
);
foreach($biaoge as $key=>$value){
echo '
';
echo '联系表';
echo '';
echo '标号名字职位工资
';
foreach($value as $row){
if($row%2==0){
$bg=#ffffff;
}else{
$bg=#dddddd;
}
echo '';
foreach($row as $col){
echo ''.$col.' ';
}
echo '
';
}
echo '
';
}
echo ;
print_r($biaoge);
echo
;
3. while() list() each() 组合循环遍历数组
each()函数,
a. 需要一个数组作为参数
b. 返回来的也是一个数组
c. 返回来的数组是0, 1, key, value四个下标(固定的)
0和key下标是当前参数数组元素的?
1和value下标是当前对数数组元素的值
d. 默认认当前元素就是第一个元素
e. 每执行一次后就会将当前元素向后移动
f. 如果到最后的元素再执行这个函数,则返回false
使用each遍历数组的示例代码如下:
代码如下 复制代码
注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为false
开始的位置是第一个元素,每(正常)执行一次该函数,指针向后移到下一个地址
list()函数
a. list()=array(); 需要将一个数组赋值给这个函数
b. 数组中的元素个数,要和list()函数中的参数个数相同
c. 数组中的每个元素值会赋值list()函数中的每个参数,list()将每个参数转为变量
d. list()只能接收索引数组
e. 按索引的下标的顺序
这不是真正的函数,而是php的语言结构。list()用一步操作给一组变量进赋值,即把数组中的值赋给一些变量。list()仅能用于数字索引的数组并假定数字索引从0开始。语法格式如下所示:
list(mixed varname,mixed ...)=array_expression //list()语句的语法格式
list()语句和其它函数在使用上有很大的区别,并不是直接接收一个数组作为参数。而是通过“=”去处符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。使用方法如下 :
代码如下 复制代码
通过上例了解list()函数的用法之后,将each()函数和list()函数结合起来使用。代码如下:
代码如下 复制代码
1,姓名=>高某,公司=>a公司,地址=>北京市);
list($key,$value)=each($contact); //将each()函数和list()函数联合使用
echo $key=>$value; //输出变量$key和$value,中间使用=>分隔
?>
while() 函数
while()循环的语法格式如下:
代码如下 复制代码
while( list($key,$value) = each(array_expressin) ){
循环体;
}
使用这种组合改写前面使用foreach遍历过的一维数组。代码如下所示:
代码如下 复制代码
1,
姓名=>高某,
公司=>a公司,
地址=>北京市,
电话=>(010)987665432,
email=>gao@php.com
);
//以html列表的方式输出数组中每个元素的信息
echo '
一个联系人信息:';
while(list($key,$value) = each($contact) ){ //将foreach语句改写成while,list()和each()的组合
echo $key:$value; //输出每个元素的键/值勤
}
echo '';
?>
while() 遍历数据是需要结合list或each函数配置才可以遍历哦,否则 它单独是无法完成数组遍历的哦。