PHP學習之十 foreach

2021-09-05 14:47:27 字數 2300 閱讀 8613

php 4(不是 php 3)包括了 foreach 結構,和 perl 以及其他語言很像。這只是一種遍歷陣列簡便方法。foreach 僅能用於陣列,當試圖將其用於其它資料型別或者乙個未初始化的變數時會產生錯誤。有兩種語法,第二種比較次要但卻是第一種的有用的擴充套件。

foreach (array_expression as $value) statement

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

第一種格式遍歷給定的 array_expression 陣列。每次迴圈中,當前單元的值被賦給 $value 並且陣列內部的指標向前移一步(因此下一次迴圈中將會得到下乙個單元)。

第二種格式做同樣的事,只除了當前單元的鍵值也會在每次迴圈中被賦給變數 $key。

注:當 foreach 開始執行時,陣列內部的指標會自動指向第乙個單元。這意味著不需要在 foreach 迴圈之前呼叫reset()

注:此外注意 foreach 所操作的是指定陣列的乙個拷貝,而不是該陣列本身。因此即使有each()的構造,原陣列指標也沒有變,陣列單元的值也不受影響。

注:foreach 不支援用「@」來禁止錯誤資訊的能力。

你可能注意到了以下的**功能完全相同:

<?php

$arr

= array(

"one"

, "two"

, "three"

);reset

($arr

);while (list(,

$value

) =

each

($arr

)) foreach (

$arr

as $value

) ?>

以下**功能也完全相同:

<?php

reset

($arr

);while (list(

$key

, $value

) =

each

($arr

)) foreach (

$arr

as $key

=>

$value

) ?>

<?php

/* foreach example 1: value only */

$a = array (1,

2, 3,

17);

foreach (

$a as

$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)

/* foreach example 3: key and value */

$a = array (

"one"

=> 1,

"two"

=> 2,

"three"

=> 3,

"seventeen"

=>

17);

foreach (

$a as

$k =>

$v)

/* foreach example 4: multi-dimensional arrays */$a[

0][0] =

"a";$a[

0][1] =

"b";$a[

1][0] =

"y";$a[

1][1] =

"z";

foreach (

$a as

$v1)

}/* foreach example 5: dynamic arrays */

foreach (array(1,

2, 3,

4, 5) as

$v)

?>

PHP之foreach引用填坑

看到一篇文章描 就是它 述了php的乙個語法特點,用文本來描述就是如果對乙個陣列進行foreach引用遍歷過後在對這個陣列使用同樣的變數進行一次普通foreach遍歷會導致這個陣列的值發生變化。我這個描述可能還是不太清楚,直接上 可以看到在迴圈當中沒有任何 所以兩次列印出來的資料肯定應該是一模一樣的...

PHP 陣列 foreach用法

foreach用於陣列 foreach僅能用於陣列,每次迴圈中,當前單元的鍵名也會在每次迴圈中被賦給變數 key。當前單元的值被賦給 value 並且陣列內部的指標向前移一步。有兩種語法 foreach array expression as value statement foreach arra...

php學習十 繼承

在php中,我們常常會定義許多類,當多個類裡面的方法或者屬性出現重複的時候,會常常造成 重複和冗雜的弊端,這個時候,我們可以用到繼承 extends 繼承的特性 1.子類可以擴充屬性 2.子類可以擴充方法 3.子類去呼叫乙個方法的時候。先去本類找,如果本類有方法,則呼叫本類的方法。如果本類沒有該方法...