***PHP 遍历数组的方法foreach
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ù)組可以被引用時才可用(例如是個變量)。以下代碼則無法運行:
<?phpforeach?(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: 4list()?中的單元可以少于嵌套數(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总结一下嵌入式OLED显示屏显示中文汉字
- 下一篇: websphere变成英文了