PHP数组元素循环
PHP教程 - PHP数组元素循环
PHP为我们提供了一组数组访问函数我们可以使用遍历数组中的每个元素,不管元素是如何索引的。
PHP维护一个指向数组元素的内部指针。这个指针最初指向第一个元素,但您可以通过数组向前和向后移动指针。
功能
要操作指针并访问它所指向的元素,请使用以下函数:
功能 | 描述 |
---|---|
current() | 获取当前元素的指针,而不改变指针位置。 |
key() | 获取指针指向的当前元素的索引,而不改变指针位置。 |
next() | 将指针向前移动到下一个元素,并返回该元素的值。 |
prev() | 将指针向后移动到前一个元素,并返回该元素的值。 |
end() | 将指针移动到数组中的最后一个元素,并返回该元素的值。 |
reset() | 将指针移动到数组中的第一个元素,并返回该元素的值。 |
每个这些函数只需要一个参数,数组,并返回必需元素的值或索引,如果元素不能被找到,则为false。
如果在指针位于数组末尾时使用next(),或者在空数组上使用current()。他们会返回假。
例子
逐步数组
<?php $authors = array( "Java", "PHP", "CSS", "HTML" ); echo "The array: " . print_r( $authors, true ) . "\n"; echo "The current element is: " . current( $authors ) . "\n"; echo "The next element is: " . next( $authors ) . "\n"; echo "...and its index is: " . key( $authors ) . "\n"; echo "The next element is: " . next( $authors ) . "\n"; echo "The previous element is: " . prev( $authors ) . "\n"; echo "The first element is: " . reset( $authors ) . "\n"; echo "The last element is: " . end( $authors ) . "\n"; echo "The previous element is: " . prev( $authors ) . "\n"; ?>
上面的代码生成以下结果。
实施例2
检索数组的最后一个元素,而不知道它是如何索引的。
<?PHP // Create a sparse indexed array $authors = array( 0 => "Java", 1 => "PHP", 2 => "CSS", 47 => "HTML" ); echo end( $authors ); // Displays "HTML" ?>
上面的代码生成以下结果。
每个功能
each()返回一个四元素数组,而不是一个值。此数组包含当前元素的键以及其值。如果元素不能被检索,因为指针已经到达或者因为数组为空,each()返回false。
这使得很容易判断每个()是否检索到值为false的元素在这种情况下,它返回四元素数组或如果它不能检索一个元素,在这种情况下它返回false。
四元素数组each()包含数字和字符串索引的元素,如下所示:
元素索引 | 元素值 |
---|---|
0 | 当前元素的键 |
"key" | 当前元素的键 |
1 | 当前元素的值 |
"value" | 当前元素的值 |
换句话说,您可以使用0或“key"的索引访问当前元素的键,或索引1或“值"来访问其值。 例如:
<?PHP $myBook = array( "title" => "Learn PHP from www.w3cschool.cn", "author" => "www.w3cschool.cn", "pubYear" => 2000 ); $element = each( $myBook ); echo "Key: " . $element[0] . "\n"; echo "Value: " . $element[1] . "\n"; echo "Key: " . $element["key"] . "\n"; echo "Value: " . $element["value"] . "\n"; ?>
上面的代码生成以下结果。
实施例3
使用each()检索值为false的数组元素:
<?PHP $myArray = array( false ); $element = each( $myArray ); $key = $element["key"]; // $key now equals 0 $val = $element["value"]; // $val now equals false ?>
因为each()都返回当前数组元素并前进数组指针,它很容易使用它在一个while循环移动通过所有元素的数组。 以下示例通过$ myBook数组,返回每个元素的键和值。
<?php $myBook = array( "title" => "Learn PHP from www.w3cschool.cn", "author" => "www.w3cschool.cn", "pubYear" => 2000 ); while ( $element = each( $myBook ) ) { echo " < dt > $element[0] < /dt > "; echo " < dd > $element[1] < /dd > "; } ?>
上面的代码生成以下结果。
更多建议: