在php中for和foreach的區別
首先,我們先準備兩個用於遍歷的陣列:
$arr1=array(1=>『a』, 3=>22, 5=>『b』, 4=>『c』, 8=>『d』);
$arr2=array(『a』=>『aaa』, 『b』=>『bbb』, 『c』=>『ccc』, 『d』=>『ddd』, 『e』=>『eee』);
一:for迴圈結構
迴圈1:
for(i=0
,i=0,
i=0,
num=count(arr
1)
;arr1);
arr1);ium
;num;
num;
i++){
echo $arr1[$i].' ';
輸出結果:a 22 c
迴圈2:
for(i=0
,i=0,
i=0,
num=count(arr
2)
;arr2);
arr2);ium
;num;
num;
i++){
echo $arr2[$i].' ';
此段語句沒有輸出
分析:迴圈1只列印出了陣列arr
1的前兩
個單元,
而迴圈2
中的
arr1的前兩個單元,而迴圈2中的
arr1的前
兩個單元
,而迴圈
2中的arr2則什麼都沒列印出來。
原因在於for迴圈的時候是按照數字遞增的,因此for只能訪問鍵為數字的陣列,例如迴圈1按照i=0
到i=0到
i=0到
i=4去遞增訪問arr
1陣列中
鍵為0到
4的單元
,但該數
組中的鍵
依次為:
1,3,
5,4,
8。而鍵
值超過4
的陣列單
元(5=
>』b
』,8=
>』d
』)不會
被訪問到
,因為c
ount
(arr1陣列中鍵為0到4的單元,但該陣列中的鍵依次為:1,3,5,4,8。而鍵值超過4的陣列單元(5=>』b』,8=>』d』)不會被訪問到,因為count(
arr1陣列
中鍵為0
到4的單
元,但該
陣列中的
鍵依次為
:1,3
,5,4
,8。而
鍵值超過
4的陣列
單元(5
=>』b
』,8=
>』d
』)不會
被訪問到
,因為c
ount
(arr1)=5,故i
<5;
因此最後
輸出結果
只有:a
22c;對
於i<5; 因此最後輸出結果只有:a 22 c ;對於
i<5;
因此最後
輸出結果
只有:a
22c;
對於arr2中所有的鍵都是字元,並非數字,所以迴圈2中沒有輸出。
二:foreach迴圈結構
迴圈3:
foreach($arr1 as key
=>
key=>
key=
>
value){
echo $key.'=>'.$value.' ';
輸出結果:1=>a 3=>22 5=>b 4=>c 8=>d
迴圈4:
foreach($arr2 as key
=>
key=>
key=
>
value){
echo $key.'=>'.$value.' ';
輸出結果:a=>aaa b=>bbb c=>ccc d=>ddd e=>eee
分析:foreach迴圈結構是按照陣列內部的指標去迴圈的,當 foreach 開始執行時,陣列內部的指標會自動指向第乙個單元。因此下一次迴圈中將會得到下乙個單元,不需要按照陣列的鍵來遍歷整個陣列。這也是foreach與for的不同之處。當然,foreach只能用於陣列和物件,並且由於 foreach 依賴內部陣列指標,在迴圈中修改其值將可能導致意外的行為。
注:for每次迴圈都操作對應索引下的值,對於每個值的改變也都會反映到被遍歷的物件中。而foreach每次操作乙個單元,都是將其索引和值分別取到變數中,或者只取出值到乙個變數中,然後單獨操作放有索引和值的變數,不會影響到被遍歷的物件本身。如果要在遍歷過程中修改物件中的值,需要在宣告是在變數前加&符號。例如:foreach(katex parse error: expected 'eof', got '&' at position 10: array as &̲value)。
結論:如果乙個陣列是使用連續的數字最為陣列單元的鍵,那麼可以使用for迴圈結構。如果不確定陣列的鍵或者陣列的鍵有包含字元的,應當使用foreach迴圈結構。
附:php陣列的遍歷迴圈,可以採用for和foreach,
$a = array (『zero』, 『one』, 『two』, 『three』);
//for迴圈遍歷輸出陣列
for($i = 0; i
unt( i < count( iunt( a); $i++) echo a[a[ a[i];//foreach遍歷迴圈輸出陣列a的值與對應的鍵 foreach ($a as $key => val ue)e cho" value) echo " value) echo "key: $value"; for迴圈輸出陣列需要統計陣列內的數量,foreach不需要考慮,for迴圈可用範圍更多些,foreach僅適合於陣列的輸出使用。 很多時候,我們需要輸出的資料是乙個二維的陣列變數,excel**的資料形式就是乙個二維陣列,我們可以用foreach的巢狀迴圈來遍歷陣列,三維及以上的陣列就建議用遞迴的方式來輸出了。 $r = array ( array(『a1』,『a2』), array(『b1』,『b2』), );foreach ($r as v)f orea ch (v) foreach( v)fore ach( v as $sv) echo $sv; require和include的相同之處 都可以包括並執行指定檔案。不同之處 include 使用時,每次都要進行讀取和評估,require使用時,檔案處理一次。實際上,檔案內容替換require 語句 這就意味著如果可能執行多次的 則使用require 效率比較高。另外一方面,如果每次執行 時是讀... 馬永佔,myz,mayongzhan json是啥.應該是一種儲存的格式吧.最強的是這種格式可以被js直接當成物件讀 php中有json encode arr 還有json decode str,assoc 其中assoc為true則返回陣列而不是物件 很簡單的用法 手冊中的例子 arr array... 在php中驗證xml 存檔日期 2019年4月18日 首次發布 2009年11月10日 php開發人員通常在其 中需要可擴充套件標記語言 xml 解析器的服務。因此,他們經常發現有必要驗證xml輸入。幸運的是,您可以在php中輕鬆完成此操作。本文向您展示如何在php中驗證xml文件以及確定驗證失敗的...在PHP中,include和require的區別
json在php和ajax中應用
在php中驗證xml 在PHP中驗證XML