PHP foreach循環(huán)使用詳解與實(shí)例代碼
更新時(shí)間:2010年05月08日 20:09:27 作者:
在PHP中的foreach是用來進(jìn)行循環(huán)對(duì)一個(gè)數(shù)組的所有元素。
foreach基本語法如下:
FOREACH ($array_variable as $value)
{
[code to execute]
}
or
FOREACH ($array_variable as $key => $value)
{
[code to execute]
}
在這兩種情況下,多次[代碼執(zhí)行]將被處死是等于在$ array_variable數(shù)組元素的個(gè)數(shù)。
讓我們來看一個(gè)例子。假設(shè)我們有下面的代碼段:
$array1 = array(1,2,3,4,5);
FOREACH ($array1 as $abc)
{
print "new value is " . $abc*10 . "<br>";
}
輸出結(jié)果
new value is 10
new value is 20
new value is 30
new value is 40
new value is 50
foreach循環(huán)以上經(jīng)歷了所有5個(gè)元素的數(shù)組$ array1,每次打印出一份聲明中含有10倍的數(shù)組元素的值。
foreach作用是遍歷當(dāng)前數(shù)組的所有值出來并且賦給$var
官方給出的實(shí)例代碼:
<?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 key 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";
}
?>
再來看一個(gè)foreach 對(duì)多維數(shù)據(jù)操作實(shí)例
$s = array(array(1,2),array(3,4),array(5,6));
foreach( $s as $v => $_v )
{
foreach( $_v as $vc => $_vc )
{
echo $_vc[0],'|'.$_vc[1],'<br />';
//print_r($_vc);
}
}
先來看一下foreach的語法:
foreach ($array as $key=>$value)
{
……
}
為了便于理解,我們假定這里的$array是一個(gè)一維的相關(guān)數(shù)組,$key是數(shù)組的索引,$value是這個(gè)索引的值,它們的名字可以隨意,之所以叫$key和$value是為了便于理解。為了能讓你更好的理解foreach的工作過程,我們來創(chuàng)建一個(gè)數(shù)組:
$array = array('first'=>'ibm','second'=>'hp');
現(xiàn)在我們模擬PHP服務(wù)用foreach對(duì)$array進(jìn)行遍歷:
foreach ($array as $key=>$value)
{
echo $key.'=>'.$value;
}
第一次循環(huán),$key = 'first',$value = 'ibm',這個(gè)時(shí)候,實(shí)際foreach對(duì)$array執(zhí)行了一個(gè)我們看不見的操作:next($array),將數(shù)組指針向前(這里的“向前”跟PHP手冊(cè)相同,不是我們通常所理解的“向前”)移一。然后echo語句輸出"first=>ibm"。
第二次循環(huán),首先會(huì)判斷數(shù)組$array的當(dāng)前指針是否已經(jīng)到了數(shù)組的末尾,如果是,結(jié)束循環(huán),否則進(jìn)入第二次循環(huán)。當(dāng)然這樣的判斷在進(jìn)入第一次循環(huán)的時(shí)候也會(huì)有,如果$array是一個(gè)空數(shù)組,那么就會(huì)直接執(zhí)行循環(huán)下面的語句。此時(shí),$key = 'second','value' = 'hp',next($array)后,輸出"second=>hp"。然后進(jìn)行判斷,數(shù)組指針已經(jīng)到達(dá)末尾,執(zhí)行下面的語句。
到這里你應(yīng)該對(duì)foreach循環(huán)有所了解了吧?還有一點(diǎn)需要的是,foreach每次只是傳遞一個(gè)值,而不是真的對(duì)數(shù)組元素進(jìn)行操作。具體到上面的例子,如果你想在每個(gè)數(shù)組元素的后面加上 'company' 這個(gè)字符串,那么$value .= 'company'這樣的操作是不行的,它并不會(huì)改變數(shù)組元素的值,這個(gè)時(shí)候你應(yīng)該這樣用:$array[$key] .= 'company';
更多可以參考:php foreach
php foreach、while性能比較
php 循環(huán)
FOREACH ($array_variable as $value)
{
[code to execute]
}
or
FOREACH ($array_variable as $key => $value)
{
[code to execute]
}
在這兩種情況下,多次[代碼執(zhí)行]將被處死是等于在$ array_variable數(shù)組元素的個(gè)數(shù)。
讓我們來看一個(gè)例子。假設(shè)我們有下面的代碼段:
復(fù)制代碼 代碼如下:
$array1 = array(1,2,3,4,5);
FOREACH ($array1 as $abc)
{
print "new value is " . $abc*10 . "<br>";
}
輸出結(jié)果
new value is 10
new value is 20
new value is 30
new value is 40
new value is 50
foreach循環(huán)以上經(jīng)歷了所有5個(gè)元素的數(shù)組$ array1,每次打印出一份聲明中含有10倍的數(shù)組元素的值。
foreach作用是遍歷當(dāng)前數(shù)組的所有值出來并且賦給$var
官方給出的實(shí)例代碼:
復(fù)制代碼 代碼如下:
<?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 key 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";
}
?>
再來看一個(gè)foreach 對(duì)多維數(shù)據(jù)操作實(shí)例
復(fù)制代碼 代碼如下:
$s = array(array(1,2),array(3,4),array(5,6));
foreach( $s as $v => $_v )
{
foreach( $_v as $vc => $_vc )
{
echo $_vc[0],'|'.$_vc[1],'<br />';
//print_r($_vc);
}
}
先來看一下foreach的語法:
復(fù)制代碼 代碼如下:
foreach ($array as $key=>$value)
{
……
}
為了便于理解,我們假定這里的$array是一個(gè)一維的相關(guān)數(shù)組,$key是數(shù)組的索引,$value是這個(gè)索引的值,它們的名字可以隨意,之所以叫$key和$value是為了便于理解。為了能讓你更好的理解foreach的工作過程,我們來創(chuàng)建一個(gè)數(shù)組:
$array = array('first'=>'ibm','second'=>'hp');
現(xiàn)在我們模擬PHP服務(wù)用foreach對(duì)$array進(jìn)行遍歷:
復(fù)制代碼 代碼如下:
foreach ($array as $key=>$value)
{
echo $key.'=>'.$value;
}
第一次循環(huán),$key = 'first',$value = 'ibm',這個(gè)時(shí)候,實(shí)際foreach對(duì)$array執(zhí)行了一個(gè)我們看不見的操作:next($array),將數(shù)組指針向前(這里的“向前”跟PHP手冊(cè)相同,不是我們通常所理解的“向前”)移一。然后echo語句輸出"first=>ibm"。
第二次循環(huán),首先會(huì)判斷數(shù)組$array的當(dāng)前指針是否已經(jīng)到了數(shù)組的末尾,如果是,結(jié)束循環(huán),否則進(jìn)入第二次循環(huán)。當(dāng)然這樣的判斷在進(jìn)入第一次循環(huán)的時(shí)候也會(huì)有,如果$array是一個(gè)空數(shù)組,那么就會(huì)直接執(zhí)行循環(huán)下面的語句。此時(shí),$key = 'second','value' = 'hp',next($array)后,輸出"second=>hp"。然后進(jìn)行判斷,數(shù)組指針已經(jīng)到達(dá)末尾,執(zhí)行下面的語句。
到這里你應(yīng)該對(duì)foreach循環(huán)有所了解了吧?還有一點(diǎn)需要的是,foreach每次只是傳遞一個(gè)值,而不是真的對(duì)數(shù)組元素進(jìn)行操作。具體到上面的例子,如果你想在每個(gè)數(shù)組元素的后面加上 'company' 這個(gè)字符串,那么$value .= 'company'這樣的操作是不行的,它并不會(huì)改變數(shù)組元素的值,這個(gè)時(shí)候你應(yīng)該這樣用:$array[$key] .= 'company';
更多可以參考:php foreach
php foreach、while性能比較
php 循環(huán)
相關(guān)文章
PHP數(shù)組的基本操作及遍歷數(shù)組的經(jīng)典操作實(shí)例
下面小編就為大家?guī)硪黄狿HP數(shù)組的基本操作及遍歷數(shù)組的經(jīng)典操作實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08PHP實(shí)現(xiàn)遠(yuǎn)程下載文件到本地
經(jīng)常寫采集器發(fā)布接口需要使用到遠(yuǎn)程附件的功能,所以自己寫了一個(gè)PHP遠(yuǎn)程下載文件到本地的函數(shù),一般情況下已經(jīng)夠用了,如果服務(wù)器支持CURL函數(shù),程序則會(huì)優(yōu)先選擇CURL,有需要的小伙伴可以參考下。2015-05-05Yii框架獲取當(dāng)前controlle和action對(duì)應(yīng)id的方法
這篇文章主要介紹了Yii框架獲取當(dāng)前controlle和action對(duì)應(yīng)id的方法,可實(shí)現(xiàn)獲取當(dāng)前controlle或action對(duì)應(yīng)id的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12PHP語言對(duì)接抖音快手小紅書視頻/圖片去水印API接口源碼
這篇文章主要介紹了PHP語言對(duì)接抖音快手小紅書視頻/圖片去水印API接口源碼,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08淺談Laravel隊(duì)列實(shí)現(xiàn)原理解決問題記錄
本篇文章主要介紹了淺談Laravel隊(duì)列實(shí)現(xiàn)原理解決問題記錄,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08PHP下的Oracle客戶端擴(kuò)展(OCI8)安裝教程
這篇文章主要介紹了PHP下的Oracle客戶端擴(kuò)展(OCI8)安裝教程,本文在Linux系統(tǒng)中實(shí)現(xiàn),OCI8是用來連接Oracle數(shù)據(jù)庫的PHP擴(kuò)展模塊,需要的朋友可以參考下2014-09-09PHP文件管理之實(shí)現(xiàn)網(wǎng)盤及壓縮包的功能操作
這篇文章主要介紹了PHP文件管理之實(shí)現(xiàn)網(wǎng)盤及壓縮包的功能操作,需要的朋友可以參考下2017-09-09