>php教程 >php手册 >php中数组遍历循环实现程序

php中数组遍历循环实现程序

WBOY
WBOY원래의
2016-06-13 10:04:181223검색

在php中对数组遍历用得最多要算是foreac,while,for这几种方法了,下面我们来介绍这三种遍历数组的实现程序代码吧。

经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢?
比如:

 代码如下 复制代码
$arr['yahoo'] = 2007;
$arr['baidu'] = 2008;
foreach ($arr as $key => $val)
{
//结果是什么?
}

又比如:

 代码如下 复制代码

$arr[2] = 'huixinchen';
$arr[1] = 2007;$arr[0] = 2008;
foreach ($arr as $key => $val)
{
//现在结果又是什么?
}

, 当我们使用, each/next系列函数来遍历的时候, 也是通过移动数组的内部指针而实现了顺序遍历, 这里有一个问题, 比如:

 代码如下 复制代码

$arr = array(1,2,3,4,5);
foreach ($arr as $v) {//可以获取}
while (list($key, $v) = each($arr))

 {//获取不到}
?>

了解到我刚才介绍的知识, 那么这个问题也就很明朗了, 因为foreach会自动reset, 而while这块不会reset, 所以在foreach结束以后, pInternalPointer指向数组最末端, while语句块当然访问不到了, 解决的办法就是在each之前, 先reset数组的内部指针.

也就是说, PHP中遍历数组的顺序, 是和元素的添加先后相关的, 那么, 现在我们就很清楚的知道, 文章开头的问题的输出是:

huixinchen
2007
2008
所以, 如果你想在数字索引的数组中按照索引大小遍历, 那么你就应该使用for, 而不是foreach

 代码如下 复制代码
for($i=0,$l=count($arr); $i

{ //这个时候,不能认为是顺序遍历(线性遍历)}

 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.