2007年7月12日 星期四

foreach的用法

參考自
http://linux.tnc.edu.tw/techdoc/banic/add.html

在 PHP4中,新增了一個迴圈 foreach,它很像是 perl和其它的語言,你可以給它一個陣列,讓它來取出陣列的值。它有下列這二個語法,第二個語法是較次要的,但是可用來作為第一個語法的延伸。

foreach(array_expression as $value) statement

foreach(array_expression as $key => $value) statement

第一個形式的迴圈,它會在每個迴圈上,將目前元素的值分配給 $value,並且向後移動陣列的內部指標,
所以在下一個迴圈的時候,你就會看到下一個元素了。

第二個形式的迴圈和第一個是相同的,不同的是它會在每個迴圈將目前元素的索引值分配給變數 $key。



注意 : 當 foreach第一次開始執行的時候,它會把陣列的內部指標重新設定到陣列的第一個元素,意思是說,在使用 foreach之前,你不必再去呼叫
reset( )。
注意 : foreach是運作在陣列的複製,而不是陣列它本身,因此並不會改變陣列指標

下面範例的功能都是相同的 :
<? php
 reset ($arr);
 while (list(, $value) = each ($arr)) {
  echo "Value: $value";
 }
 foreach ($arr as $value) {
  echo "Value: $value";
 }
?>
下面範例的功能也都是相同的 :
<?php
 reset ($arr);
 while (list($key, $value) = each ($arr)) {
  echo "Key: $key; Value: $value";
 }
 foreach ($arr as $key => $value) {
  echo "Key: $key; Value: $value";
 }
?>
以下的範例將說明 foreach的用法 :
<?php
 /* foreach example 1: value only */
 $a = array (1, 2, 3, 17);
 foreach ($a as $v) {
  print "Current value of \$a: $v";
 }
 /* foreach example 2: value (with key printed for illustration) */
 $a = array (1, 2, 3, 17);
 $i = 0;
 /* for illustrative purposes only */
 foreach($a as $v) {
  print "\$a[$i] => $k";
 }
 /* foreach example 3: key and value */
 $a = array (
  "one" => 1,
  "two" => 2,
  "three" => 3,
  "seventeen" => 17
 );
 foreach($a as $k => $v) {
  print "\$a[$k] => $v";
 }
?>

沒有留言: