谈一谈PHP中数组元素的遍历
PHP 中的数组实际上是一个有序映射。每个元素都是一个键值对(key=>value),在PHP的数组中,数组的key通常为整数或字符串,数组元素的value可以是整数、浮点数、字符串甚至另一个数组或对象。
. 当数组的键为连续键时,可以利用for循环来遍历该数组的元素:
代码示例:
<?php
$numbers = range(1, 5);
for ($i=0; $i <count($numbers) ; $i++) {
echo "the element is ".$numbers[$i]."<br/>";
}
?>
显示结果:
. 当数组的键为非连续键时:
①使用 while() 和 list(),each()配合使用。
代码示例:
<?php
$arr= array("php","python","java","go");
while(list($key,$val)= each($arr)) {
echo "This language element is $val.<br />";
}
?>
显示结果:
注意:list()语言结构仅用于数字“键”的数组,并且要求数字“键”从0开始连续递增,关联数组并不能赋值,或者是既有数字索引又有关联索引,就会只取数组里面的数字索引元素。each()返回数组中当前的键/值对并将数组指针向前移动一步.
②foreach( )则是更加常用的方法:
对于foreach( ),有以下两种语法,
1. foreach (array_expression as $value)
statement
2. foreach (array_expression as $key => $value)
statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。 第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
代码示例:
<?php
$a = array("a"=>"f76g", 2=>"b", "c","d"=>"csd32");
foreach ($a as $aa){
echo "This element is $aa! <br />";
}
?>
显示结果:
代码示例:
<?php
$a = array("a"=>"f76g", 2=>"b", "c","d"=>"csd32");
foreach ($a as $key=>$value){
echo "This element is $value! <br />";
}
?>
显示结果:
注意:当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。
除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。foreach对数组指针有些副作用。除非对其重置,在 foreach 循环中或循环后都不要依赖数组指针的值。
③使用next( )函数和循环语句遍历
代码示例;
<?php
$colors = array("orange", "red", "yellow");
$fruits = array("orange", "apple", "banana");
$temp = array_combine($colors, $fruits);
reset($temp);
do{
$key = key($temp);
$value = current($temp);
echo $key." ==> ".$value."<br/>";
}while(next($temp));
?>
显示结果:
注意:
由于使用next( )函数返回数组下一个元素“值”,如果这个“值”为空,循环将不能继续执行下去,遍历有可能失败。因此,如果数组中的某个元素“值”为空,则不能用next( )函数遍历数组。
- 上一篇:没有了
- 下一篇:没有了