foreach 語法結構用於遍歷陣列。
php foreach() 語法結構用於遍歷操作或輸出陣列,foreach() 僅能用於遍歷陣列或物件,當試圖將其用於其它資料型別或者乙個未初始化的變數時會產生錯誤。
語法:
foreach (array as $value)上述語法中,每次迴圈將當前單元的值賦給 $value 並且陣列內部的指標向前移一步。在第二種語法格式中還將當前單元的鍵名也會在每次迴圈中賦給變數 $key。statement
// 或者:
foreach (array as $key => $value)
statement
例子:
<?php執行該例子輸出:$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age)
?>
182025
<?php執行例子輸出:$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age)
?>
wang: 18當 foreach 開始執行時,陣列內部的指標會自動指向第乙個單元,這意味著不需要在 foreach 迴圈之前呼叫 reset()。li: 20
zhang: 25
foreach 所操作的是指定陣列的乙個拷貝,而不是該陣列本身。對返回的陣列單元的修改也不會影響原陣列(見下面例子),但 foreach 迴圈執行到結束,原陣列的內部指標將指向陣列的結尾。
<?php執行例子輸出:$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age)
// 輸出原陣列
print_r($arr_age);
?>
28要在 foreach 中修改原陣列元素,可以通過引用來實現,將上面的例子更改為:3035
array ( [wang] => 18 [li] => 20 [zhang] => 25 )
<?php執行例子輸出:$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age)
// 輸出原陣列
print_r($arr_age);
?>
18foreach 語法結構只能用於遍歷一維陣列,要遍歷多維陣列,一般是將 foreach 巢狀遞迴使用或者將原陣列分割為一維陣列再進行 foreach 遍歷。2025
array ( [wang] => 28 [li] => 30 [zhang] => 35 )
一二維陣列混合的例子:
$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也可以用 list() 和 each() 結合來遍歷陣列,但測試發現效率不如 foreach() 。2025
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迴圈遍歷乙...