[請益] 迴圈取最後一筆資料

看板PHP作者 (ChaN)時間13年前 (2011/03/25 11:54), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串1/2 (看更多)
通常我跑 foreach 跑 array 的時候 如果要針對最後一筆資料做事情 會用一個 counter 先紀錄再比對 而且如果 index 不能拿來當作比對對象的話 可能還要另外用一個 counter 去紀錄 有辦法在 foreach 或 for 迴圈裡面直接知道這是最後一筆資料嗎? <?php $arr = array( 'name' => 'Chan', 'age' => 31, 'job' => 'rd'); $counter = (count($arr)-1); $count = 0; foreach ($arr as $v) { echo $v; if ($count == $counter) echo ' (this is last)'; echo '<br />'; $count++; } ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.9.172

03/25 11:59, , 1F
你只想要最後一筆的話,那用array_pop吧
03/25 11:59, 1F

03/25 13:10, , 2F
if($v == last($arr)) or if empty(next($arr))
03/25 13:10, 2F

03/25 13:22, , 3F
php 有 last 這個 function 嗎?
03/25 13:22, 3F

03/25 13:25, , 4F
@knives 我是想要確認這是最後一筆
03/25 13:25, 4F

03/25 15:44, , 5F
記錯 是end($arr)
03/25 15:44, 5F

03/25 15:45, , 6F
不過不知道如果陣列裡有跟end一樣的值會不會誤判
03/25 15:45, 6F

03/25 16:45, , 7F
先用array_pop 再用迴圈跑陣列 跑完再處理用pop取得的元素
03/25 16:45, 7F

03/26 01:26, , 8F
用 end 有風險吧,array 裡面有一樣的 value 怎麼辦
03/26 01:26, 8F

03/31 12:55, , 9F
foreach($arr as $k => $v)
03/31 12:55, 9F

03/31 12:56, , 10F
{ if($k == $counter){ echo $v; //最後一筆 }
03/31 12:56, 10F

03/31 13:14, , 11F
或是先用array_reverse,確認第一個比較方便XD
03/31 13:14, 11F
文章代碼(AID): #1DZ17qHG (PHP)
文章代碼(AID): #1DZ17qHG (PHP)