foreach循環獲取第一個和最后一個元素?
引言
對于數組遍歷,使用一個 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 :_)
我是 @程序員小助手 ,持續分享編程知識,歡迎關注。