PHP為我們提供了一組數(shù)組訪問函數(shù)我們可以使用遍歷數(shù)組中的每個元素,不管元素是如何索引的。
PHP維護(hù)一個指向數(shù)組元素的內(nèi)部指針。這個指針最初指向第一個元素,但您可以通過數(shù)組向前和向后移動指針。
要操作指針并訪問它所指向的元素,請使用以下函數(shù):
功能 | 描述 |
---|---|
current() | 獲取當(dāng)前元素的指針,而不改變指針位置。 |
key() | 獲取指針指向的當(dāng)前元素的索引,而不改變指針位置。 |
next() | 將指針向前移動到下一個元素,并返回該元素的值。 |
prev() | 將指針向后移動到前一個元素,并返回該元素的值。 |
end() | 將指針移動到數(shù)組中的最后一個元素,并返回該元素的值。 |
reset() | 將指針移動到數(shù)組中的第一個元素,并返回該元素的值。 |
每個這些函數(shù)只需要一個參數(shù),數(shù)組,并返回必需元素的值或索引,如果元素不能被找到,則為false。
如果在指針位于數(shù)組末尾時使用next(),或者在空數(shù)組上使用current()。他們會返回假。
逐步數(shù)組
<?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"; ?>
上面的代碼生成以下結(jié)果。
檢索數(shù)組的最后一個元素,而不知道它是如何索引的。
<?PHP // Create a sparse indexed array $authors = array( 0 => "Java", 1 => "PHP", 2 => "CSS", 47 => "HTML" ); echo end( $authors ); // Displays "HTML" ?>
上面的代碼生成以下結(jié)果。
each()返回一個四元素數(shù)組,而不是一個值。此數(shù)組包含當(dāng)前元素的鍵以及其值。如果元素不能被檢索,因為指針已經(jīng)到達(dá)或者因為數(shù)組為空,each()返回false。
這使得很容易判斷每個()是否檢索到值為false的元素在這種情況下,它返回四元素數(shù)組或如果它不能檢索一個元素,在這種情況下它返回false。
四元素數(shù)組each()包含數(shù)字和字符串索引的元素,如下所示:
元素索引 | 元素值 |
---|---|
0 | 當(dāng)前元素的鍵 |
"key" | 當(dāng)前元素的鍵 |
1 | 當(dāng)前元素的值 |
"value" | 當(dāng)前元素的值 |
換句話說,您可以使用0或“key"的索引訪問當(dāng)前元素的鍵,或索引1或“值"來訪問其值。 例如:
<?PHP $myBook = array( "title" => "Learn PHP from hgci.cn", "author" => "hgci.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"; ?>
上面的代碼生成以下結(jié)果。
使用each()檢索值為false的數(shù)組元素:
<?PHP $myArray = array( false ); $element = each( $myArray ); $key = $element["key"]; // $key now equals 0 $val = $element["value"]; // $val now equals false ?>
因為each()都返回當(dāng)前數(shù)組元素并前進(jìn)數(shù)組指針,它很容易使用它在一個while循環(huán)移動通過所有元素的數(shù)組。 以下示例通過$ myBook數(shù)組,返回每個元素的鍵和值。
<?php $myBook = array( "title" => "Learn PHP from hgci.cn", "author" => "hgci.cn", "pubYear" => 2000 ); while ( $element = each( $myBook ) ) { echo " < dt > $element[0] < /dt > "; echo " < dd > $element[1] < /dd > "; } ?>
上面的代碼生成以下結(jié)果。
更多建議: