對于數組遍曆,使用一個 foreach 幾乎就完全夠用了。那麼你一般在編寫代碼的時候,怎麼判斷是循環的第一個元素,和最後一個元素呢?
本文通過幾個示例,展示實現此功能的多種方法。
首先,我們使用最直接,最容易想到的辦法,使用一個計數器 $i 用于标記當前的索引位置。如果是第一個,則 $i == 0;如果是最後一個,則 $i 等于數組長度減一。代碼如下:
$i = 0;
$len = count($array);
foreach ($array as $item) {
if ($i == 0) {
// first
} else if ($i == $len - 1) {
// last
}
$i ;
}
上述代碼實現簡單直接,但是寫的優點太長了,而且也不美觀。有沒有更優雅一些的方式呢?
我們試着從PHP數組操作函數上着手,内置函數中提供了 reset,用于将指針指向數組的第一個元素;end 函數,将指針指向數組的最後一個元素。下面的代碼,就是這樣實現的:
foreach($array as $key => $element) {
reset($array);
if ($key === key($array))
echo 'FIRST ELEMENT!';
end($array);
if ($key === key($array))
echo 'LAST ELEMENT!';
}
函數 key() 用于獲取當前數組指針所指向的索引值。
而 foreach 循環内将元素匹配到 $key => $element 兩個變量,$key 存儲循環所指向的索引位置。
PHP 的數組操作函數為我們提供了思路,那麼當然還可以用 prev 函數,返回前一個元素的值;使用 next 函數,獲取下一個元素的值。
這兩個函數都是在獲取不到元素時返回 false。那麼代碼就可以這樣來寫了:
foreach( $items as $item ) {
if( !prev( $items ) ) {
echo 'First Item';
}
if( !next( $items ) ) {
echo 'Last Item';
}
}
本文通過三種方式實現了定位 foreach 循環體内,第一個元素和最後一個元素的方法。希望大家熟練使用。
Happy coding :_)
我是 @程序員小助手 ,持續分享編程知識,歡迎關注。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!