foreach用於數組:
foreach僅能用於數組,每次循環中,當前單元的鍵名也會在每次循環中被賦給變量 $key。當前單元的值被賦給 $value 並且數組內部的指針向前移一步。
有兩種語法:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 並且數組內部的指針向前移一步(因此下一次循環中將會得到下一個單元)。
第二種格式做同樣的事,只除了當前單元的鍵名也會在每次循環中被賦給變量 $key。
1、運用foreach可以對數組裏的每一項進行運算,讓每一項都乘以2
//Example 1:
$array=array(1,2,3);
foreach($array as $key => $value){
$value *= 2;
}
print_r($array);
Result:
Array ( [0] => 1 [1] => 4 [2] => 6 )
//Example 2:
$array=array(1,2,3);
foreach($array as $key => $value){
$array[$key] *= 2;
}
print_r($array);
Result:
Array ( [0] => 2 [1] => 4 [2] => 6 )
原因:因爲foreach()方法中的對$key和$value的賦值爲傳值賦值,所以Example 1中直接賦值給$value並沒有真正地改變$array中的值;Example 2中$array[$key]是引用賦值,直接對$array中的數據進行操作,比較容易理解。
如果想要用$value完成對$array的更改,可以用&$value將賦值方式改爲引用賦值,這時變量$value的指針就直接指向數組中的單元了。