日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

***PHP 遍历数组的方法foreach

發(fā)布時間:2025/4/16 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ***PHP 遍历数组的方法foreach 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

foreach?

http://php.net/manual/zh/control-structures.foreach.php

(PHP 4, PHP 5)

foreach?語法結(jié)構(gòu)提供了遍歷數(shù)組的簡單方式。foreach?僅能夠應用于數(shù)組和對象,如果嘗試應用于其他數(shù)據(jù)類型的變量,或者未初始化的變量將發(fā)出錯誤信息。有兩種語法:

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

第一種格式遍歷給定的?array_expression?數(shù)組。每次循環(huán)中,當前單元的值被賦給?$value?并且數(shù)組內(nèi)部的指針向前移一步(因此下一次循環(huán)中將會得到下一個單元)。

第二種格式做同樣的事,只除了當前單元的鍵名也會在每次循環(huán)中被賦給變量?$key。

還能夠自定義遍歷對象。

?

Note:

當?foreach?開始執(zhí)行時,數(shù)組內(nèi)部的指針會自動指向第一個單元。這意味著不需要在?foreach?循環(huán)之前調(diào)用?reset()。

由于?foreach?依賴內(nèi)部數(shù)組指針,在循環(huán)中修改其值將可能導致意外的行為。

可以很容易地通過在?$value?之前加上 & 來修改數(shù)組的元素。此方法將以引用賦值而不是拷貝一個值。

<?php
$arr?=?array(1,?2,?3,?4);
foreach?($arr?as?&$value)?{
????$value?=?$value?*?2;
}
//?$arr?is?now?array(2,?4,?6,?8)
unset($value);?//?最后取消掉引用
?>

$value?的引用僅在被遍歷的數(shù)組可以被引用時才可用(例如是個變量)。以下代碼則無法運行:

<?php
foreach?(array(1,?2,?3,?4)?as?&$value)?{
????$value?=?$value?*?2;
}

?> Warning

數(shù)組最后一個元素的?$value?引用在?foreach?循環(huán)之后仍會保留。建議使用?unset()?來將其銷毀。

?

Note:

foreach?不支持用“@”來抑制錯誤信息的能力。

用戶可能注意到了以下的代碼功能完全相同:

<?php
$arr?=?array("one",?"two",?"three");
reset($arr);
while?(list(,?$value)?=?each($arr))?{
????echo?"Value:?$value<br>\n";
}

foreach?($arr?as?$value)?{
????echo?"Value:?$value<br?/>\n";
}
?>

以下代碼功能也完全相同:

<?php
$arr?=?array("one",?"two",?"three");
reset($arr);
while?(list($key,?$value)?=?each($arr))?{
????echo?"Key:?$key;?Value:?$value<br?/>\n";
}

foreach?($arr?as?$key?=>?$value)?{
????echo?"Key:?$key;?Value:?$value<br?/>\n";
}
?>

示范用法的更多例子:

<?php
/*?foreach?example?1:?value?only?*/

$a?=?array(1,?2,?3,?17);

foreach?($a?as?$v)?{
???echo?"Current?value?of?\$a:?$v.\n";
}

/*?foreach?example?2:?value?(with?its?manual?access?notation?printed?for?illustration)?*/

$a?=?array(1,?2,?3,?17);

$i?=?0;?/*?for?illustrative?purposes?only?*/

foreach?($a?as?$v)?{
????echo?"\$a[$i]?=>?$v.\n";
????$i++;
}

/*?foreach?example?3:?key?and?value?*/

$a?=?array(
????"one"?=>?1,
????"two"?=>?2,
????"three"?=>?3,
????"seventeen"?=>?17
);

foreach?($a?as?$k?=>?$v)?{
????echo?"\$a[$k]?=>?$v.\n";
}

/*?foreach?example?4:?multi-dimensional?arrays?*/
$a?=?array();
$a[0][0]?=?"a";
$a[0][1]?=?"b";
$a[1][0]?=?"y";
$a[1][1]?=?"z";

foreach?($a?as?$v1)?{
????foreach?($v1?as?$v2)?{
????????echo?"$v2\n";
????}
}

/*?foreach?example?5:?dynamic?arrays?*/

foreach?(array(1,?2,?3,?4,?5)?as?$v)?{
????echo?"$v\n";
}
?>

用 list() 給嵌套的數(shù)組解包

(PHP 5 >= 5.5.0)

PHP 5.5 增添了遍歷一個數(shù)組的數(shù)組的功能并且把嵌套的數(shù)組解包到循環(huán)變量中,只需將?list()?作為值提供。

例如:

<?php
$array?=?[
????[1,?2],
????[3,?4],
];

foreach?($array?as?list($a,?$b))?{
????//?$a?contains?the?first?element?of?the?nested?array,
????//?and?$b?contains?the?second?element.
????echo?"A:?$a;?B:?$b\n";
}
?>

以上例程會輸出:

A: 1; B: 2 A: 3; B: 4

list()?中的單元可以少于嵌套數(shù)組的,此時多出來的數(shù)組單元將被忽略:

<?php
$array?=?[
????[1,?2],
????[3,?4],
];

foreach?($array?as?list($a))?{
????//?Note?that?there?is?no?$b?here.
????echo?"$a\n";
}
?>

以上例程會輸出:

1 3

如果?list()?中列出的單元多于嵌套數(shù)組則會發(fā)出一條消息級別的錯誤信息:

<?php
$array?=?[
????[1,?2],
????[3,?4],
];

foreach?($array?as?list($a,?$b,?$c))?{
????echo?"A:?$a;?B:?$b;?C:?$c\n";
}
?>

以上例程會輸出:

Notice: Undefined offset: 2 in example.php on line 7 A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7 A: 3; B: 4; C: 如何聯(lián)系我:【萬里虎】www.bravetiger.cn 【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起) 【博客】http://www.cnblogs.com/kenshinobiy/

總結(jié)

以上是生活随笔為你收集整理的***PHP 遍历数组的方法foreach的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。