回覆列表
-
1 # 程式設計師小助手
-
2 # java攻城獅
我的一般做法,先獲取最後一項的Key,再在表示式中判斷。
end($array); $key_last = key($array); foreach ( $array as $k => $v ) { // ... if ( $k != $key_last ) { // ... } }
-
3 # 一隻北漂碼農
迴圈的目的是為了什麼?為什麼不直接取第一個和最後一個?
array_pop(陣列) 返回陣列最後一個元素
array_recerse(陣列) 反轉陣列
array_pop(陣列) 返回原陣列第一個元素
或者
$arr = array_values(陣列);
$len = count($arr);
$arr[0] 第一個元素值
$arr[$len - 1] 最後一個元素值
-
4 # 窮站長
為啥要用foreach獲取呢
對於某個陣列來講第一個是陣列的第0位,最後一個是陣列的count($arr)-1位
所以 第一個就是 $arr[0] 最後一個是$arr[count($arr)-1]
引言
對於陣列遍歷,使用一個 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 :_)