PHP 用 while、list、each 達成 foreach 的寫法

學習程式語言時, 總是學學 for, 然後再試著用 while 寫出 for 的效果 等等的一些練習.

來看看沒有 foreach 前, 要想要有 foreach 的功能要怎麼寫(用 while、list、each 來達成).

在這篇文章看到: PHP的foreach前身寫法 (下述程式碼轉載自此文)


//舊的寫法
reset($attributes);
while (list($key, $value) = each($attributes)) {
    //do something
}

//PHP4版本新增
foreach ($attributes as $key => $value){
   //do something
}

紀錄起來, 若新學的程式語言沒有 foreach, 或許可以試著幫他補上~ 🙂

2010-01-06 更新: 於 while() 前面增加 reset($array), 感謝 Hackfan 指點. (foreach 預設會將陣列指標做 reset 的動作, 就是跑完一次 foreach, 指標已經指到最後面, while 再跑將印不出任何資料).

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP 用 while、list、each 達成 foreach 的寫法〉中有 11 則留言

  1. 我想到就是說試試看mysql_fetch出來的東西能不能用foreach直接下去處理
    但是好像試失敗了 必須用while塞給一個變數之後才可以使用他去處理
    囧">

  2. 嗯嗯, 感恩, 這個我沒注意到.
    實測範例狀況:
    $a = array(...);
    foreach($a) 跑完後, 再跑上述的 while($a), 會印不出任何資料.
    foreach($a) 跑完後, 再跑 foreach($a), 會資料還是會印的出來.
    foreach($a) 跑完後, 再跑 reset($a), 再跑 while($a), 會資料就可以正常印的出來.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料