回覆列表
  • 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 :_)

  • 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]

  • 中秋節和大豐收的關聯?
  • 屏風馬破當頭炮:破巡河車吃卒用炮打象,關鍵的是哪一步?