foreach循環(huán)獲取第一個(gè)和最后一個(gè)元素?
引言
對(duì)于數(shù)組遍歷,使用一個(gè) foreach 幾乎就完全夠用了。那么你一般在編寫代碼的時(shí)候,怎么判斷是循環(huán)的第一個(gè)元素,和最后一個(gè)元素呢?
本文通過(guò)幾個(gè)示例,展示實(shí)現(xiàn)此功能的多種方法。
學(xué)習(xí)時(shí)間首先,我們使用最直接,最容易想到的辦法,使用一個(gè)計(jì)數(shù)器 $i 用于標(biāo)記當(dāng)前的索引位置。如果是第一個(gè),則 $i == 0;如果是最后一個(gè),則 $i 等于數(shù)組長(zhǎng)度減一。代碼如下:
$i = 0; $len = count($array); foreach ($array as $item) { if ($i == 0) { // first } else if ($i == $len - 1) { // last } $i++; }
上述代碼實(shí)現(xiàn)簡(jiǎn)單直接,但是寫的優(yōu)點(diǎn)太長(zhǎng)了,而且也不美觀。有沒(méi)有更優(yōu)雅一些的方式呢?
我們?cè)囍鴱腜HP數(shù)組操作函數(shù)上著手,內(nèi)置函數(shù)中提供了 reset,用于將指針指向數(shù)組的第一個(gè)元素;end 函數(shù),將指針指向數(shù)組的最后一個(gè)元素。下面的代碼,就是這樣實(shí)現(xiàn)的:
foreach($array as $key => $element) { reset($array); if ($key === key($array)) echo 'FIRST ELEMENT!'; end($array); if ($key === key($array)) echo 'LAST ELEMENT!'; }
函數(shù) key() 用于獲取當(dāng)前數(shù)組指針?biāo)赶虻乃饕怠?/p>
而 foreach 循環(huán)內(nèi)將元素匹配到 $key => $element 兩個(gè)變量,$key 存儲(chǔ)循環(huán)所指向的索引位置。
PHP 的數(shù)組操作函數(shù)為我們提供了思路,那么當(dāng)然還可以用 prev 函數(shù),返回前一個(gè)元素的值;使用 next 函數(shù),獲取下一個(gè)元素的值。
這兩個(gè)函數(shù)都是在獲取不到元素時(shí)返回 false。那么代碼就可以這樣來(lái)寫了:
foreach( $items as $item ) { if( !prev( $items ) ) { echo 'First Item'; } if( !next( $items ) ) { echo 'Last Item'; } }
寫在最后本文通過(guò)三種方式實(shí)現(xiàn)了定位 foreach 循環(huán)體內(nèi),第一個(gè)元素和最后一個(gè)元素的方法。希望大家熟練使用。
Happy coding :_)
我是 @程序員小助手 ,持續(xù)分享編程知識(shí),歡迎關(guān)注。