以前我们经常会想怎么来实现php数组循环输出来,本文章来介绍了利用php中常用的四种循环语句来实现单数组或多维数组循环输出方法.
在 PHP 中,我们可以使用下列循环语句:
while
只要指定的条件成立,则循环执行代码块
do...while
首先执行一次代码块,然后在指定的条件成立时重复这个循环
for
循环执行代码块指定的次数
foreach
根据数组中每个元素来循环代码块
先我们利用php自带函数对php数组进行遍历
随手可得array_keys()和array_values()函数以用来得到数组中所有关键字和对应的值的列表.
实例代码如下:
- <?php
// define an array
$menu = array('breakfast' => 'bacon and eggs', 'lunch' => 'roast beef', 'dinner' => 'lasagna');
/* returns the array ('breakfast', 'lunch', 'dinner') with numeric indices */
$result = array_keys($menu);
print_r($result);
print "<br />";
/* returns the array ('bacon and eggs', 'roast beef', 'lasagna') with numeric indices */
$result = array_values($menu);
print_r($result);
利用foreach 遍历php数组
PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误.
实例代码如下:
- list = array('upid'=>'1','title'=>'公司新闻','list'=>array('id'=>'3','title'=>'公司新闻标题测试!','intime'=>'2009-29-5'));
- foreach ($list as $v=>$a)
- {
- echo $a['upid'] .'-'. $a['title'];
- foreach ($a['list'] as $b){
- echo $b['title'];
- }
- }
使用数组键值实例代码如下:
- <?php
- $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
- foreach ($arr_age as $key=>$age) {
- echo $key,': ',$age,'<br />';
- }
- ?>
运行例子输出:
wang: 18
zhang: 25
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,这意味着不需要在 foreach 循环之前调用 reset().
for() 循环遍历数组
如果是操作连续键值的数组,也可以采用 for() 循环来遍历数组:
实例代码如下:
- <pre>
- <?php
- $shuzu=array("ni","wo","ta","php","mysql");
- $count=count($shuzu);
- echo "使用for遍历数组";
- echo "<br/>$nbsp;<br/>";
- for($i=0;$i<$count;$i++)
- {
- $j=$i+1;
- echo "第{$j}个元素是: $shuzu[$i]";
- echo "<br/>$nbsp;<br/>";
- }
- ?>
- </pre>
25
也可以用 list() 和 each() 结合来遍历php数组,但测试发现效率不如 foreach() .
list函数
list() 函数用数组中的元素为一组变量赋值.
注意,与 array() 类似,list() 实际上是一种语言结构,不是函数.
语法
list(var1,var2...)参数 描述
var1 必需.第一个需要赋值的变量.
var2 可选.可以有多个变量.
提示和注释
注释:该函数只用于数字索引的数组,且假定数字索引从 0 开始
*/
实例代码如下:
- $colors = array('red','blue','green','yellow');
- while(list($key,$val) = each($colors)) {
- echo "other list of $val.<br />";
- }
- PHP中遍历数组有三种常用的方法:
一、使用for语句循环遍历数组;
二、使用foreach语句遍历数组;
三、联合使用list()、each()和while循环遍历数组。
这三种方法中效率最高的是使用foreach语句遍历数组。从PHP4开始就引入了foreach结构,是PHP中专门为遍历数组而设计的语句,推荐大家使用。先分别介绍这几种方法。
一、使用for语句循环遍历数组
值得大家注意的是使用for语句循环遍历数组要求遍历的数组必须是索引数组。PHP中不仅有关联数组而且还有索引数组,所以PHP中很少用for语句循环遍历数组。
实例代码如下:
复制代码代码如下:
<?php
$arr = array('http://www.jb51.net','脚本之家','PHP教程');
$num = count($arr);
for($i=0;$i<$num;++$i){
echo $arr[$i].'<br />';
}
?>
注释:上例代码中我们先计算出数组$arr中元素的个数,然后才使用在for语句,这样做很高效的。因为如果是for($i=0;$i< count($arr);++$i)的话,每次循环都会计算数组$arr中元素的个数,而使用上面的方式可以减去这种开销。使用++$i也是为了提高效率,前面有文章我们提到过,建议大家再看看。
上面代码的输出结果为:
http://www.jb51.net
脚本之家
PHP教程
二、使用foreach语句遍历数组
使用foreach语句循环遍历数组有二种方式,我们使用的最多的还是第一种方式。介绍如下:
第一种方式:
foreach(array_expression as $value){
//循环体
}
实例代码:
复制代码代码如下:
<?php
$arr = array('http://www.jb51.net','脚本之家','PHP教程');
foreach($arr as $value){
echo $value.'<br />';
}
?>
每次循环中,当前元素的值被赋给变量$value,并且把数组内部的指针向后移动一步。所以下一次循环中会得到数组的下一个元素,直到数组的结尾才停止循环,结束数组的遍历。
第二种方式:
foreach(array_expression as $key=>$value){
//循环体
}
实例代码:
复制代码代码如下:
<?php
//定义数组
$arr = array('http://www.jb51.net','脚本之家','PHP教程');
foreach($arr as $k=>$v){
echo $k."=>".$v."<br />";
}
?>
三、联合使用list()、each()和while循环遍历数组
each()函数需要传递一个数组作为一个参数,返回数组中当前元素的键/值对,并向后移动数组指针到下一个元素的位置。
list()函数,这不是一个真正的函数,是PHP的一个语言结构。list()用一步操作给一组变量进行赋值。
实例代码:
复制代码代码如下:
<?php
//定义循环的数组
$arr = array('website'=>'http://www.jb51.net','webname'=>'脚本之家')
while(list($k,$v) = each($arr)){
echo $k.'=>'.$v.'<br />';
}
?> jb51.net
输出结果为:
website=>http://www.jb51.net
webname=>PHP程序员
总结:上述三种循环遍历数组的方法中建议大家使用foreach语句循环遍历数组,效率更高。