PHP 4 引入了 foreach 結構,和 Perl 以及其餘語言很像。這只是一種遍歷數組簡便方法。foreach 僅能用於數組,當試圖將其用於其它數據類型或者一個未初始化的變量時會產生錯誤。有兩種語法,第二種比較次要但倒是第一種的有用的擴展。 foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement 第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 而且數組內部的指針向前移一步(所以下一次循環中將會獲得下一個單元)。 第二種格式作一樣的事,只除了當前單元的鍵名也會在每次循環中被賦給變量 $key。 自PHP 5 起,還可能遍歷對象。 注: 當 foreach 開始執行時,數組內部的指針會自動指向第一個單元。這意味着不須要在 foreach 循環以前調用 reset()。 注: 除非數組是被引用,foreach 所操做的是指定數組的一個拷貝,而不是該數組自己。所以數組指針不會被 each() 結構改變,對返回的數組單元的修改也不會影響原數組。不過原數組的內部指針的確在處理數組的過程當中向前移動了。假定 foreach 循環運行到結束,原數組的內部指針將指向數組的結尾。 自 PHP 5 起,能夠很容易地經過在 $value 以前加上 & 來修改數組的單元。此方法將以引用賦值而不是拷貝一個值。 <?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) ?> 此方法僅在被遍歷的數組能夠被引用時纔可用(例如是個變量)。 注: foreach 不支持用「@」來抑制錯誤信息的能力。