PHP 陣列遍歷 foreach 語法結構

2021-06-06 22:55:39 字數 2242 閱讀 2286

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() 。

print_r():列印輸出陣列內容及結構

is_array():檢測變數是否是陣列

移步至個人小站:

www.very321.com

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迴圈遍歷乙...