php數組中foreach遍歷數組的使用實例詳解(圖)

黄舟
發布: 2023-03-07 12:02:01
原創
7051 人瀏覽過

什麼是foreach遍歷陣列?

我們在使用foreach遍歷陣列時,常常會因為概念不清而出錯,以下簡單介紹一下常用的foreach運算。

(PHP 4, PHP 5, PHP 7)

foreach 語法結構提供了遍歷陣列的簡單方式。 foreach 僅能夠應用於數組和對象,如果嘗試應用於其他資料類型的變量,或未初始化的變數將發出錯誤訊息。

foreach遍歷陣列兩種語法

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement
登入後複製

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

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

自PHP 5 起,還可能遍歷物件。 

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

注意:除非陣列是被引用,foreach 所操作的是指定陣列的拷貝,而不是該陣列本身。 foreach對陣列指標有些副作用。除非對其重置,在 foreach 循環中或循環後都不要依賴數組指標的值。 

自 PHP 5 起,可以輕鬆地透過在 $value 之前加上 & 來修改陣列的元素。此方法將以引用賦值而不是拷貝一個值。 

<?php
header("Content-Type:text/html; charset=utf-8");
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>
登入後複製

$value 的引用只有在被遍歷的陣列可以被引用時才可用(例如是個變數)。下列程式碼則無法運作:

<?php
foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}
?>
登入後複製

注意:陣列最後一個元素的 $value 引用在 foreach 迴圈之後仍會保留。建議使用 unset() 來銷毀。 foreach 不支援用「@」來抑制錯誤訊息的能力。

下面是php foreach遍歷數組的實例

1.要遍歷的陣列是一維數組,比較簡單。若是單一數組,用兩種方法分別表示,如下:

<?php
header("Content-Type:text/html; charset=utf-8");
$array = array("PHP中文网","百度","搜狗","www.php.cn");
foreach ($array as $value){
    echo $value."<br>";
}
echo "<br>";
foreach ($array as $key =>$value){
    echo $key."--".$value."<br>";
}
?>
登入後複製

輸出結果為:

php數組中foreach遍歷數組的使用實例詳解(圖)

2.若是一維關聯數組,顯示如下, 注意key的值是不同的:

<?php
header("Content-Type:text/html; charset=utf-8");
$array = array("网站1"=>"PHP中文网","网站2"=>"百度","网站3"=>"搜狗","网址"=>"www.php.cn");
foreach ($array as $value){
    echo $value."<br>";
}
echo "<br>";
foreach ($array as $key =>$value){
    echo $key."--".$value."<br>";
}
?>
登入後複製

遍歷結果為:

php數組中foreach遍歷數組的使用實例詳解(圖)

3.遍歷二維陣列時,稍微麻煩一點,此時的value值是一個數組,由此可以衍生出多種操作數組的方法。下面先遍歷一下,基本的二維數組:

<?php
header("Content-Type:text/html; charset=utf-8");
$array = array(
    array("1","PHP中文网"),
    array("2","www.php.cn"),
    array("3","百度"),
    array("4","搜狗")
);
foreach ($array as $value){
    print_r($value);
    echo "<br>";
}
?>
登入後複製

遍歷結果如下:

php數組中foreach遍歷數組的使用實例詳解(圖)

採用第二種方法,遍歷數組時,要注意key的取值,不要和數組id值弄混;

<?php
header("Content-Type:text/html; charset=utf-8");
$array = array(
    array("1","PHP中文网"),
    array("2","www.php.cn"),
    array("3","百度"),
    array("4","搜狗")
);
foreach ($array as $key =>$value){
    echo "key =".$key."<br>";
    print_r($value);
    echo "<br>";
}
?>
登入後複製

遍歷結果如下:

php數組中foreach遍歷數組的使用實例詳解(圖)

此外,經常會出現要求將二維數組某一列變為一維數組,此時要將value中對應的字段取出,放在一維數組中,若是用for循環操作,比較繁瑣,用foreach較為簡單,如下,獲取當前數組的id列,和name列,分別存放在一維數組中:

<?php
header("Content-Type:text/html; charset=utf-8");
$array = array(
    array("id"=>"1","name"=>"PHP中文网"),
    array("id"=>"2","name"=>"www.php.cn"),
    array("id"=>"3","name"=>"百度"),
    array("id"=>"4","name"=>"搜狗")
); //二维数组定义
//获取某一列作为一维数组
$idArr = array();//id列
$nameARR = array();//name列
foreach($array as $key => $value){
    $arr = $value["id"];
    $idArr =$arr;  //存入ID列
    $name = $value["name"];
    $nameARR = $name;  //存入name列
    print_r($idArr);
    print_r($nameARR);
}
?>
登入後複製

遍歷結果為:

php數組中foreach遍歷數組的使用實例詳解(圖)


【相關教學推薦】

1. 相關專題推薦:《php陣列(Array)

2. 相關影片課程推薦: 《#用foreach迴圈來遍歷:索引與關聯數組


#

以上是php數組中foreach遍歷數組的使用實例詳解(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板