foreach 是一種遍歷數(shù)組簡(jiǎn)便方法驮配。foreach 僅能用于數(shù)組每窖,當(dāng)試圖將其用于其它數(shù)據(jù)類(lèi)型或者一個(gè)未初始化的變量時(shí)會(huì)產(chǎn)生錯(cuò)誤酝蜒。有兩種語(yǔ)法卦停,第二種比較次要但卻是第一種的有用的擴(kuò)展向胡。
- 第一種格式遍歷給定的 array_expression 數(shù)組。每次循環(huán)中沫浆,當(dāng)前單元的值被賦給 $value 并且數(shù)組內(nèi)部的指針向前移一步(因此下一次循環(huán)中將會(huì)得到下一個(gè)單元)捷枯。
foreach (array_expression as $value)
statement
- 第二種格式做同樣的事滚秩,只除了當(dāng)前單元的鍵名也會(huì)在每次循環(huán)中被賦給變量 $key专执。
自PHP 5 起,還可能遍歷對(duì)象郁油。
foreach (array_expression as $key => $value)
statement
注意:當(dāng) foreach 開(kāi)始執(zhí)行時(shí)本股,數(shù)組內(nèi)部的指針會(huì)自動(dòng)指向第一個(gè)單元。這意味著不需要在 foreach 循環(huán)之前調(diào)用 reset()桐腌。
注意:除非數(shù)組是被引用拄显,foreach 所操作的是指定數(shù)組的一個(gè)拷貝,而不是該數(shù)組本身案站。foreach對(duì)數(shù)組指針有些副作用躬审。除非對(duì)其重置,在 foreach 循環(huán)中或循環(huán)后都不要依賴(lài)數(shù)組指針的值蟆盐。
自 PHP 5 起承边,可以很容易地通過(guò)在 $value 之前加上 & 來(lái)修改數(shù)組的元素。此方法將以引用賦值而不是拷貝一個(gè)值石挂。
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
此方法僅在被遍歷的數(shù)組可以被引用時(shí)才可用(例如是個(gè)變量)博助。
<?php
foreach (array(1, 2, 3, 4) as &$value) {
$value = $value * 2;
}
?>