淺談PHP數組讀取的循環操作_PHP教程
推薦:談PHP開發者必不可少的五個發展要素語法結構教科書上的知識和實際的程序設計是有區別的,真正的知識要在實際的開發中獲得。每個php的開發人員在開始開發web應用程序之前,都應該熟悉下面的五件事: 1. 框架 框架可以說是php開發中的一個最重要的問題。用php開發web應用程序時有很多方法,有很
PHP基本上就是一種數組語言。時常要進行大量的數組循環操作,主要有兩種方式,一種是foreach,另一種是while,到底哪種好哪種壞一直有爭論,雖然我很早就意識到了這個問題,但是一直沒有細究,懵懂的感覺一直持續到現在,為了以后能節省點CPU時間,下面總結一下:
在循環里進行的是數組“讀”操作,則foreach比while快:
無格式查看復制到剪貼板打印代碼?
foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key];
}
foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key];
}
在循環里進行的是數組“寫”操作,則while比foreach快:
無格式查看復制到剪貼板打印代碼?
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}
總結:通常認為,foreach涉及到值復制,一定會比while慢,但實際上,如果僅僅是在循環里進行數組的讀操作,那么foreach是很快的,這是因為PHP采用的復制機制是“引用復制,寫時拷貝”,這樣看來,foreach的高效讀操作就不難理解了。另外,既然foreach不適合處理數組寫操作,那么我們可以得出一個結論,多數情況下,類似foreach ($array as $key => $value)形式的代碼都應該被替換成while (list($key) = each($array))。這些技巧產生的速度差異在小項目里可能并不明顯,但是在類似框架這樣的大項目中,一次請求動輒便會涉及到幾百幾千幾萬次數組循環操作,差異就會明顯放大。
分享:開發PHP程序的原則你不必嚴格遵守這些原則,違背它們也不會被處以宗教刑罰。但你應當把這些原則看成警鈴,若違背了其中的一條,那么警鈴就會響起 。 ----- Arthur J.Riel (1)所有數據都應該隱藏在所在的類的內部。 (2)類的使用者必須依賴類的共有接口,但類不能依賴它的使用者
- 相關鏈接:
- 教程說明:
PHP教程-淺談PHP數組讀取的循環操作。