題注:這是好東西,它教導我們在什麼時候用什麼樣的方式進行程式設計,結果可以加快程式的運作。
PHP還是比較常用的,于是我研究了一下PHP數組周遊,在這裡拿出來和大家分享一下,希望對大家有用。關于PHP數組周遊,其實很多人都做過測試
了,像http://www.lilov.org/post/18.html這樣,不過這些讨論其實還是太簡單,在這裡我将更全面的讨論一下這個問題,雖
然看起來有點吹毛求疵,不過做程式就應該抱着這種思想,不斷的精益求精~不是麼:cool:。
首先,PHP數組周遊的方式for、while、foreach不再多說了,不知道的可以自己去PHP官方查手冊,但是for、while、
foreach周遊數組的寫法也有不同,那麼效果呢,接着看就知道咯~程式改自上面那個連結中Lilov所寫的程式,具體内容可以下載下傳測試源檔案改名為
array_check.php後就可以運作
測試一:PHP4.4.1下,使用一維數組

可以看出7最快,不過這種方式不會傳回下标,如果需要使用下标這種方法就不符合要求了。其次是2,看出來這種寫法和1有什麼不同了麼?2在循環
前計算數組的長度,而1每次循環都要計算數組的長度是以2比1更高效。不過2和1都是一樣的,隻能操作那種下标是數字而且數字連續的數組。第三是6,也就
是一般讨論中認為最快的方法,如果你操作數組的下标同時下标有是非連續數字那麼毫無疑問應該選擇這個方法,至于慢的就不多說了,忘記這些用法
吧:roll:
測試二:PHP4.4.1下,使用二位數組
結果發生了重大變化
最快的是2,因為for并不會管多元的問題,是以和一維數組時相比速度并沒有發生太大的變化(至于為什麼比一維還快,這個我隻能說受檔案中運算
的影響....這種影響的而且确存在,用PEAR的Benchmark類測試的時候我就發現測試1次、100次、1000次得到的時間差别很大)
其次是6,同測試一中所說,如果2不能用(也就是下标不連續),6毫無疑問是最好的選擇而令人跌破眼鏡的是7,竟然是最慢的,而且比第二慢的還
要慢10倍...這個問題實在令人費解,後來我又做過比較細緻的測試,發現7這種方法,主要受元素個數的影響,如果一維10個元素,那麼如果第二維都有8
個元素則7的速度和6幾乎一樣,如果一維30個元素,那麼二維是6個元素時7和6速度基本一樣。但是如果一維1000個元素二維元素超過3個那麼7就會比
6慢很多了。