foreach
是一種特殊的循環(huán)語(yǔ)句,只適用于數(shù)組和對(duì)象。
foreach
可以以?xún)煞N方式使用。
使用foreach檢索每個(gè)元素的值,如下所示:
foreach ( $array as $value ) { // (do something with $value here) } // (rest of script here)
要使用foreach檢索鍵和值,請(qǐng)使用以下語(yǔ)法:
foreach ( $array as $key => $value ) { // (do something with $key and/or $value here } // (rest of script here)
使用foreach循環(huán)獲取值
<?PHP
$authors = array( "Java", "PHP", "CSS", "HTML" );
foreach ( $authors as $val ) {
echo $val . "\n";
}
?>
上面的代碼生成以下結(jié)果。
使用foreach循環(huán)通過(guò)關(guān)聯(lián)數(shù)組
<?php //from ww w . ja va2s . c o m
$myBook = array( "title" => "Learn PHP from m.hgci.cn",
"author" => "m.hgci.cn",
"pubYear" => 2000 );
foreach ( $myBook as $key => $value ) {
echo "$key \n";
echo "$value \n";
}
?>
上面的代碼生成以下結(jié)果。
當(dāng)使用foreach時(shí),循環(huán)中的值是值的副本。
如果你改變了值,你“不影響值在原始數(shù)組中。以下示例代碼說(shuō)明了這一點(diǎn):
<?PHP/*www .j a va 2 s. c o m*/
$authors = array( "Java", "PHP", "CSS", "HTML" );
// Displays "Java PHP Javascript HTML";
foreach ( $authors as $val ) {
if ( $val == "CSS" ) $val = "Javascript";
echo $val . " ";
}
print_r ( $authors );
?>
上面的代碼生成以下結(jié)果。
雖然$ val在循環(huán)中從“CSS"改為“Javascript"原始的$ authors數(shù)組保持不變。
要修改數(shù)組值,我們需要得到foreach()返回一個(gè)引用數(shù)組中的值,而不是副本。
要處理對(duì)數(shù)組元素的引用,請(qǐng)?zhí)砑右粋€(gè)在foreach語(yǔ)句中的變量名之前的&
(和號(hào))符號(hào):
foreach ( $array as & $value ) {
這里的前面的例子改寫(xiě)為使用引用:
<?PHP
$authors = array( "Java", "PHP", "CSS", "HTML" );
foreach ( $authors as & $val ) {
if ( $val == "CSS" ) $val = "Javascript";
echo $val . " ";
}
unset( $val );
print_r ( $authors );
?>
上面的代碼生成以下結(jié)果。
這一次,第三個(gè)元素的值在$ authors數(shù)組在數(shù)組本身中從“CSS"更改為“Javascript"。
unset($ val)
確保 $ val
變量在循環(huán)已完成。
當(dāng)循環(huán)結(jié)束時(shí),$ val仍然保存對(duì)最后一個(gè)元素的引用。在我們的代碼中更改$ val改變$ authors數(shù)組的最后一個(gè)元素。通過(guò)取消設(shè)置$ val,我們避免潛在的錯(cuò)誤。
更多建議: