首页 > php代码 > php数组的遍历函数与方法例子

php数组的遍历函数与方法例子

php中数组遍历方法有很多种,如有:for,foreach,while(),list(),each()这些函数与方法都要我们在数组遍历中会用到的,下面给大家介绍一下。

1. 使用for语句循环遍历数组

a. 其它语言(只有这一种方式) 

b. PHP中这种方式不是我们首选方式 

c. 数组必须是索引数组,而且下标还必须是连续的 索引数组下标还可以不连序,数组还有关联数组)

<?php
/*
 * 我们想要在遍历的过程中改变以下数组中某些元素的值
*/
$people = Array(
    Array("name" => "Kalle"
        , "salt" => 856412
    ) ,
    Array("name" => "Pierre"
        , "salt" => 215863
    )
);
for ($i = 0; $i < sizeof($people); ++$i) {
    $people[$i]['salt'] = rand(000000, 999999);
}
?>

以上代码的问题,在于for的第二个表达式会导致代码执行很慢--因为每次循环时都要 计算一遍数组的长度。由于数组的长度始终不变,我们可以用一个中间变量来存储数组长度, 然后用这个变量作为for循环的第二个表达式。这样在循环的时候就可以直接使用该变量的值, 不用每次重新计算。 如下:

<?php
$people = Array(
    Array("name" => "Kalle"
        , "salt" => 856412
    ) ,
    Array("name" => "Pierre"
        , "salt" => 215863
    )
);
for ($i = 0, $size = sizeof($people); $i < $size; ++$i) {
    $people[$i]['salt'] = rand(000000, 999999);
}
?>

2. 使用foreach语句循环遍历数组

foreach(数组变量 as 变量值){ 

循环体 

}

a. 循环次数由数组的元素个数决定 

b. 每一次循环都会将数组中的元素分别赋值给后面变量

foreach(数组变量 as 下标变量=> 值变量){

}

例子

foreach遍历3维数组

<?php
//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 '<table align="center" width="600" border="1">';
    echo '<caption>联系表</caption>';
    echo '<tr bgcolor="#dddddd">';
    echo '<th>标号</th><th>名字</th><th>职位</th><th>工资</th></tr>';
    foreach ($value as $row) {
        if ($row % 2 == 0) {
            $bg = "#ffffff";
        } else {
            $bg = "#dddddd";
        }
        echo '<tr bgcolor=' . $bg . '>';
        foreach ($row as $col) {
            echo '<td>' . $col . '</td>';
        }
        echo '</tr>';
    }
    echo '</table>';
}
echo "<pre>";
print_r($biaoge);
echo "</pre>";
?>

3. while() list() each() 组合循环遍历数组

each()函数,


a. 需要一个数组作为参数 

b. 返回来的也是一个数组 

c. 返回来的数组是0, 1, key, value四个下标(固定的)

0和key下标是当前参数数组元素的?

1和value下标是当前对数数组元素的值

d. 默认认当前元素就是第一个元素 

e. 每执行一次后就会将当前元素向后移动 

f. 如果到最后的元素再执行这个函数,则返回false

使用each遍历数组的示例代码如下:

<?php
//使用each函数遍历数组
$arrGoogle = array(
    'google',
    'Gmail',
    'Chrome',
    'Android'
);
//第一次使用each取得当前键值对,并且将指针移到下一个位置
$arrG = each($arrGoogle);
//打印结果,并且换行以清晰显示结果
print_r($arrG);
print '<br>';
$arrGmail = each($arrGoogle);
print_r($arrGmail);
print '<br>';
$arrChrome = each($arrGoogle);
print_r($arrChrome);
print '<br>';
$arrAndroid = each($arrGoogle);
print_r($arrAndroid);
print '<br>';
//当指针位于数组末尾再次执行函数each,如果是这样再次执行结果返回false
$empty = each($arrGoogle);
//如果指针无法继续后移返回false
if ($empty == false) {
    print '指针以位于数组末尾,无法在向后移,故返回false';
}
?>

注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为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()语句和其它函数在使用上有很大的区别,并不是直接接收一个数组作为参数。而是通过&ldquo;=&rdquo;去处符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。使用方法如下 :

<?php
$info = array(
    'coffee',
    'brown',
    'caffeine'
); //声明一个索引数组$info
list($drink, $color, $power) = $info; //将数组中的所有元素转为变量
echo "$drink is $color and $power makes it special.n"; //输出的三个变量值是数组中三个元素的值
list($drink, , $power) = $info; //将数组中的部分元素变为变量
echo "$drink has $power.n"; //输出的两个变更值是数组中的前两个元素的值
list(, , $power) = $info; //跳过前两个变量只将数组中第三个元素的值转为变量
echo "I need $power!n"; //输出的一个变量值是数组中桃花汛三个元素的值勤
?>

通过上例了解list()函数的用法之后,将each()函数和list()函数结合起来使用。代码如下:

<?php
$contact = array(
    "ID" => 1,
    "姓名" => "高某",
    "公司" => "A公司",
    "地址" => "北京市"
);
list($key, $value) = each($contact); //将each()函数和list()函数联合使用
echo "$key=>$value"; //输出变量$key和$value,中间使用"=>"分隔
?>

while() 函数

while()循环的语法格式如下:

while( list($key,$value) = each(array_expressin) ){
   循环体;
}

使用这种组合改写前面使用foreach遍历过的一维数组。代码如下所示:

<?php
//声明一个一维的关联数组$contact
$contact = array(
    "ID" => 1,
    "姓名" => "高某",
    "公司" => "A公司",
    "地址" => "北京市",
    "电话" => "(010)987665432",
    "EMAIL" => "gao@php.com"
);
//以HTML列表的方式输出数组中每个元素的信息
echo '<dl>一个联系人信息:';
while (list($key, $value) = each($contact)) { //将foreach语句改写成while,list()和each()的组合
    echo "<dd>$key:$value</dd>"; //输出每个元素的键/值勤
    
}
echo '</dl>';
?>

while() 遍历数据是需要结合list或each函数配置才可以遍历哦,否则 它单独是无法完成数组遍历的哦。


教程网址:http://www.phprm.com/code/62431.html

欢迎收藏∩_∩但请保留本文链接。

标签:foreach for循环

相关文章

发表留言