PHP数组的遍历(附带实例)
所谓数组的遍历,就是把数组中的变量值读取出来。本节将讲解 PHP 中遍历数组的常见方法。
遍历多维数组一般情况下需要嵌套循环或者递归循环,但是这些方式都不够灵活,因为在不确定该数组是几维的情况下,不可能永无止境地嵌套不够灵活,因为在不确定该数组是几维的情况下,不可能永无止境地嵌套循环。这里配合使用递归、foreach() 和迭代器类 RecursiveIteratorIterator,即可完美实现多维数组的循环输出。
遍历一维数组
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循环)
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
遍历多维数组一般情况下需要嵌套循环或者递归循环,但是这些方式都不够灵活,因为在不确定该数组是几维的情况下,不可能永无止境地嵌套不够灵活,因为在不确定该数组是几维的情况下,不可能永无止境地嵌套循环。这里配合使用递归、foreach() 和迭代器类 RecursiveIteratorIterator,即可完美实现多维数组的循环输出。