PHP 陣列遍歷 foreach 語法結構

2021-07-29 17:46:04 字數 3161 閱讀 9579

foreach 語法結構用於遍歷陣列。

php foreach() 語法結構用於遍歷操作或輸出陣列,foreach() 僅能用於遍歷陣列或物件,當試圖將其用於其它資料型別或者乙個未初始化的變數時會產生錯誤。

語法:

foreach (array as $value)

statement

// 或者:

foreach (array as $key => $value)

statement

上述語法中,每次迴圈將當前單元的值賦給 $value 並且陣列內部的指標向前移一步。在第二種語法格式中還將當前單元的鍵名也會在每次迴圈中賦給變數 $key。

例子:

<?php

$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);

foreach ($arr_age as $age)

?>

執行該例子輸出:

18

2025

<?php

$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);

foreach ($arr_age as $key=>$age)

?>

執行例子輸出:

wang: 18

li: 20

zhang: 25

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

foreach 所操作的是指定陣列的乙個拷貝,而不是該陣列本身。對返回的陣列單元的修改也不會影響原陣列(見下面例子),但 foreach 迴圈執行到結束,原陣列的內部指標將指向陣列的結尾。

<?php

$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);

foreach ($arr_age as $age)

// 輸出原陣列

print_r($arr_age);

?>

執行例子輸出:

28

3035

array ( [wang] => 18 [li] => 20 [zhang] => 25 )

要在 foreach 中修改原陣列元素,可以通過引用來實現,將上面的例子更改為:

<?php

$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);

foreach ($arr_age as &$age)

// 輸出原陣列

print_r($arr_age);

?>

執行例子輸出:

18

2025

array ( [wang] => 28 [li] => 30 [zhang] => 35 )

foreach 語法結構只能用於遍歷一維陣列,要遍歷多維陣列,一般是將 foreach 巢狀遞迴使用或者將原陣列分割為一維陣列再進行 foreach 遍歷。

一二維陣列混合的例子:

$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小張", "age"=>25));

foreach ($arr_age as $age)

} else

}?>

執行該例子輸出:

18

20小張

25

對多維陣列的遍歷處理就要根據實際的資料結構而採取最合適的處理方式。

php 陣列是通過雜湊表(hashtable)表實現的,因此 foreach 遍歷陣列時是依據元素新增的先後順序來進行的。如果想按照索引大小遍歷,應該使用 for() 迴圈遍歷。

如果是操作連續鍵值的陣列,也可以採用 for() 迴圈來遍歷陣列:

<?php

$arr_age = array(18, 20, 25);

$num = count($arr_age);

for($i = 0; $i < $num; $i++)

?>

執行例子輸出如下:

18

2025

也可以用 list() 和 each() 結合來遍歷陣列,但測試發現效率不如 foreach() 。

//使用array()語句結構將聯絡人列表中所有資料宣告為乙個二維陣列,預設下標是順序數字索引

$contact1 = array( //定義外層陣列 array(1,'高某','a公司','北京市','(010)987654321','[email protected]'),//子陣列1 array(2,'洛某','b公司','上海市','(021)123456789','[email protected]'),//子陣列2 array(3,'峰某','c公司','天津市','(022)24680246','[email protected]'), //子陣列3 array(4,'書某','d公司','重慶市','(023)13579135','[email protected]') //子陣列4 ); //以html**的形式輸出二維陣列中的每個元素 echo ''; echo '

'; echo ''; echo '編號

姓名公司

位址**

emall'; echo ''; //使用雙層for語句巢狀二維陣列$contact1,以html**的形式輸出 //使用外層迴圈遍歷陣列$contact1中的行 for($row=0;$row$contact1 = array(                                             //定義外層陣列

array(1,'高某','a公司','北京市','(010)987654321','[email protected]'),//子陣列1

array(2,'洛某','b公司','上海市','(021)123456789','[email protected]'),//子陣列2

array(3,'峰某','c公司','天津市','(022)24680246','[email protected]'),  //子陣列3

array(4,'書某','d公司','重慶市','(023)13579135','[email protected]')     //子陣列4

);foreach($contact1 as $key=>$s)

}

PHP 陣列遍歷 foreach 語法結構

foreach 語法結構用於遍歷陣列。php foreach 語法結構用於遍歷操作或輸出陣列,foreach 僅能用於遍歷陣列或物件,當試圖將其用於其它資料型別或者乙個未初始化的變數時會產生錯誤。語法 foreach array as value statement 或者 foreach array...

foreach 遍歷陣列

foreach array expression as value statement foreach array expression as key value statement 第一種格式遍歷給定的 array expression 陣列。每次迴圈中,當前單元的值被賦給 value 並且陣列內...

foreach迴圈遍歷類陣列

using system using system.collections using system.collections.generic using system.linq using system.text using system.threading.tasks 使用foreach迴圈遍歷乙...