首页 > 编程笔记 > PHP笔记 阅读:16

PHP数组的遍历(附带实例)

所谓数组的遍历,就是把数组中的变量值读取出来。本节将讲解 PHP 中遍历数组的常见方法。

遍历一维数组

1) 遍历一维索引数组

下面通过一个案例讲解如何通过循环语句遍历一维索引数组,此案例中用到了 for 循环和 foreach 循环。
<?php
$roomtypes = array( '单床房','标准间','三床房','VIP套房');
for ($i = 0; $i < 3; $i++){
    echo $roomtypes[$i]." (for循环)<br/>";
}
foreach ($roomtypes as $room){
    echo $room."(foreach循环)<br/>";
}
?>
运行结果为:

单床房 (for循环)
标准间 (for循环)
三床房 (for循环)
单床房(foreach循环)
标准间(foreach循环)
三床房(foreach循环)
VIP套房(foreach循环)

for 循环只进行了三次,foreach 循环则列出了数组中的所有数组元素。

2) 遍历一维联合数组

下面以遍历酒店房间类型为例对联合数组进行遍历。
<?php
$prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=>
    368);
foreach ($prices_per_day as $price){
    echo $price."<br/>";
}
foreach ($prices_per_day as $key => $value){
    echo $key.":".$value." 每天。<br/>";
}
?>
运行结果为:

298
268
198
368
单床房:298 每天。
标准间:268 每天。
三床房:198 每天。
VIP套房:368 每天。

其中,foreach ($prices_per_day as $price){}遍历数组元素,所以输出 4 个整型数字。而foreach ($prices_per_day as $key => $value){}除了遍历数组元素外,还遍历其所对应的关键字,如单床房是数组元素 298 的关键字。

遍历多维数组

下面以使用多维数组编写房间类型为例演示数组遍历,具体操作步骤如下。
<?php
$roomtypes = array(
    array('type'=>'单床房',
           'info'=>'此房间为单人单间。',
           'price_per_day'=>298),
    array('type'=>'标准间',
           'info'=>'此房间为两床标准配置。',
           'price_per_day'=>268),
    array('type'=>'三床房',
           'info'=>'此房间备有三张床',
           'price_per_day'=>198),
    array('type'=>'VIP套房',
           'info'=>'此房间为VIP两间内外套房',
           'price_per_day'=>368)
);

$arrayiter = new RecursiveArrayIterator($roomtypes);
$iteriter = new RecursiveIteratorIterator($arrayiter);
// 直接打印即可按照横向顺序打印出来
foreach($iteriter as $key=>$val){
    echo $key.'=>'.$val.'<br/>';
}
?>
运行结果为:

type=>单床房
info=>此房间为单人单间。
price_per_day=>298
type=>标准间
info=>此房间为两床标准配置。
price_per_day=>268
type=>三床房
info=>此房间备有三张床
price_per_day=>198
type=>VIP套房
info=>此房间为VIP两间内外套房
price_per_day=>368

$roomtypes 中的每个数组元素都是一个数组,而作为数组元素的数组又都有三个拥有键名的数组元素。

遍历多维数组一般情况下需要嵌套循环或者递归循环,但是这些方式都不够灵活,因为在不确定该数组是几维的情况下,不可能永无止境地嵌套不够灵活,因为在不确定该数组是几维的情况下,不可能永无止境地嵌套循环。这里配合使用递归、foreach() 和迭代器类 RecursiveIteratorIterator,即可完美实现多维数组的循环输出。

相关文章