php遍歷數組的函數及其用法匯總
1. foreach()
foreach()是一個用來遍歷陣列中資料的最簡單有效的方法。
#example1:
<?php $colors= array('red','blue','green','yellow'); foreach ($colorsas$color){ echo "Do you like $color? <br />"; } ?>
# 顯示結果:
Do you like red?
Do you like blue?
Do you like green?
Do you like yellow?
2. while()
while() 通常和list(),each()搭配使用。
#example2:
<?php $colors= array('red','blue','green','yellow'); while(list($key,$val)= each($colors)) { echo "Other list of $val.<br />"; } ?>
顯示結果:
Other list of red.
Other list of blue.
Other list of green.
Other list of yellow.
3. for()
#example3:
<?php $arr= array ("0"=> "zero","1"=> "one","2"=> "two"); for ($i= 0;$i< count($arr); $i++){ $str= $arr[$i]; echo "the number is $str.<br />"; } ?>
##顯示結果:the number is zero.
the number is one.
the number is two.
<?php $capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix"); echo "<p>Can you name the capitals of these states?</p>"; while($key= key($capitals)) { echo $key."<br />"; next($capitals); //每个key()调用不会推进指针。为此要使用next()函数 } ?>
Ohio
Towa
Arizona
<?php $colors= array('red','blue','green','yellow'); foreach ($colorsas$color){ echo "Do you like $color? <br />"; } reset($colors); while(list($key,$val)= each($colors)) { echo "$key=> $val<br />"; } ?>
顯示結果:
##Do you like red?
Do you like blue?Do you like green?
Do you like yellow?
0 => red
1 => blue
2 => green
3 => yellow
注意:將一個數組賦值給另一個數組時會重置原來的數組指針,因此在上例中如果我們在循環內部將$colors 賦給了另一個變量的話將會導致無限循環。
while循環
內,再執行程式碼,瀏覽器就會無止盡地顯示結果。 each()
array each(array input_array)
each()函數傳回輸入陣列目前鍵/值對,並將指標推進一個位置。傳回的陣列包含四個鍵,鍵0和key包含鍵名,而鍵1和value包含對應的資料。如果執行each()前指標位於陣列結尾,則傳回FALSE。
#example6
<?php $capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix"); $s1= each($capitals); print_r($s1); ?>
#顯示結果:
Array ( [1] => Columbus [value] => ; Columbus [0] => Ohio [key] => Ohio )
current(),next(),prev(),end()
mixed current(array target_array)
current()函數傳回位於target_
array陣列目前指標位置的陣列值。與next()、prev()、和end()函數不同,current()不移動指標。 next()函數傳回緊接著放在目前陣列指標的下一個位置的陣列值。 prev()函數傳回位於目前指標的前一個位置的陣列值,如果指標本來就位於陣列的第一個位置,則傳回FALSE。
end()函數將指標移向target_array的最後一個位置,並傳回最後一個元素。
#example7
<?php $fruits= array("apple","orange","banana"); $fruit= current($fruits); //return "apple" echo $fruit."<br />"; $fruit= next($fruits); //return "orange" echo $fruit."<br />"; $fruit= prev($fruits); //return "apple" echo $fruit."<br />"; $fruit= end($fruits); //return "banana" echo $fruit."<br />"; ?>
# 顯示結果:
apple
orangeapple
banana
=========== 下面來測試三種遍歷陣列的速度===========
一般情況下,遍歷一個陣列有三種方法,for、while、foreach。其中最簡單方便的是foreach。以下先讓我們來測試一下共同遍歷一個有50000個下標的
一維數組Intel Core Due2 2GHz2GB 1067MHz DDR3
Mac OS X 10.5.7
Apache 2.0.59
MySQL 5.0.41
PHP 5.2 .6
#example8
<?php $arr= array(); for($i= 0; $i< 50000; $i++){ $arr[]= $i*rand(1000,9999); } function GetRunTime() { list($usec,$sec)=explode(" ",microtime()); return ((float)$usec+(float)$sec); } ###################################### $time_start= GetRunTime(); for($i= 0; $i< count($arr); $i++){ $str= $arr[$i]; } $time_end= GetRunTime(); $time_used= $time_end- $time_start; echo 'Used time of for:'.round($time_used, 7).'(s)<br /><br />'; unset($str, $time_start, $time_end, $time_used); ###################################### $time_start= GetRunTime(); while(list($key, $val)= each($arr)){ $str= $val; } $time_end= GetRunTime(); $time_used= $time_end- $time_start; echo 'Used time of while:'.round($time_used, 7).'(s)<br /><br />'; unset($str, $key, $val, $time_start, $time_end, $time_used); ###################################### $time_start= GetRunTime(); foreach($arr as$key=> $val){ $str= $val; } $time_end= GetRunTime(); $time_used= $time_end- $time_start; echo 'Used time of foreach:'.round($time_used, 7).'(s)<br /><br />'; ?>
測試結果:
Used time of for:0.0228429(s)
Used time of while:0.0544658(s)
Used time of foreach:0.0085628(s)
經過反覆多次測試,結果表明,對於遍歷同樣一個數組,foreach速度最快,最慢的則是while。從原理上來看,foreach是對數組副本進行操作(透過拷貝數組),而while則透過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組複製進去,而while直接移動內部指標。原因應該是,foreach是PHP內部實現,而while是通用的循環結構。所以,在通常應用中foreach簡單,而且效率高。在PHP5下,foreach還可以遍歷類別的屬性。
以上是php遍歷數組的函數及其用法匯總的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。
