转自http://www.w3school.com.cn/php/func_array_each.asp
定义和用法
each() 函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动。
返回的数组中包括的四个元素:键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
如果内部指针越过了数组范围,本函数将返回 FALSE。
语法
each(array)
参数 | 描述 |
---|---|
array | 必需。规定要使用的数组。 |
例子 1
<?php $people = array("Peter", "Joe", "Glenn", "Cleveland"); print_r (each($people)); ?>
输出:
Array ( [1] => Peter [value] => Peter [0] => 0 [key] => 0 )
例子 2
each() 经常和 list() 结合使用来遍历数组。本例与上例类似,不过循环输出了整个数组:
<?php $people = array("Peter", "Joe", "Glenn", "Cleveland"); reset($people); while (list($key, $val) = each($people)) { echo "$key => $val<br />"; } ?>
输出:
0 => Peter 1 => Joe 2 => Glenn 3 => Cleveland
例子解释
因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上例中如果我们在循环内部将 $people 赋给了另一个变量的话将会导致无限循环。
注意:
如下代码:
<?php
$url=array('新浪' => 'www.sina.com',
'雅虎' => 'www.yahoo.com',
'网易' => 'www.163.com',
'腾讯' => 'www.qq.com',
'百度' => 'www.baidu.com',
);
while($leach=each($url)){
echo $leach['key'];
echo "-";
echo $leach['value'].'<br>';
}
$test1=each($url);
echo $test1['key'];
echo $test1['value'].'<br>';
foreach ($url as $link){
echo $link.'<br>';
}
foreach ($url as $site=>$link){
echo $site,$link;
echo "<a href= http://$link>$site</a><br>";
}
$url1=array('13.5','25','62');
$leach=each($url1);
echo $leach['key'] .'<br>';
echo $leach['value' ] .'<br>';
print_r($leach);
?>
你可以运行一下知道结果是这样的:
为什么单独用each却没有输出??
因为数组的指针已经在while循环后指向空,调用each就没有输出。所以单独调用each是要小心,一般不要和循环一起使用,否则就会出错。
另外:此处的$leach['key'],和$leach['value']最好加引号 否则有些php服务器不支持key 和value关键字而报错!!