PHP For 迴圈
迴圈執(zhí)行程式碼區(qū)塊指定的次數(shù),或當(dāng)指定的條件為真時循環(huán)執(zhí)行程式碼區(qū)塊。
for 迴圈
語法
#for (初始值; 條件; 增量)
{
要執(zhí)行的程式碼;
}
參數(shù):
??初始值:是初始化賦值,可以同時賦值多個程式碼。
??條件:在每次循環(huán)開始前求值。如果值為 TRUE,則繼續(xù)循環(huán),執(zhí)行巢狀的循環(huán)語句。如果值為 FALSE,則終止迴圈。
??增量:在每次循環(huán)之後被求值。
註解:上面的初始值和增量參數(shù)可為空,或有多個表達式(以逗號分隔)。
實例
下面的實例定義一個初始值為 i=1 的迴圈。只要變數(shù)?i?小於或等於 5,循環(huán)將繼續(xù)運作。循環(huán)每運行一次,變數(shù)?i?就會增加1:
<html> <body> <?php for ($i=1; $i<=5; $i++) { echo "The number is" . $i . "<br>"; } ?> </body> </html>
輸出:
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
前面章節(jié)我們學(xué)習(xí)了數(shù)組,而for循環(huán)是一個單純的計數(shù)型循環(huán),而索引數(shù)組的下標(biāo)為整數(shù)的數(shù)值。 因此,我們可以透過for迴圈來遍歷索引數(shù)組。
<?php //聲明一個數(shù)組,值為1到10 $num = array(1,2,3,4,5,6,7,8,9,10); //按照索引數(shù)組的特點,下標(biāo)從0開始。所以1的下標(biāo)為0,10的下標(biāo)為9 echo $num[0].'<br />'; echo $num[9].'<br />'; //我們可以得到數(shù)組中元素的總個數(shù),為10 echo count($num); //遍歷這個索引數(shù)組的話,我們就可以定義一個變量為$i //$i 的值為0,從0開始 //可以設(shè)定一個循環(huán)條件為:$i 在下標(biāo)的(9)最大值之內(nèi)循環(huán) for($i = 0; $i < count($num); $i++) { echo $num[$i].'<br />'; } ?>
透過上面的例子,我們就把陣列進行了循環(huán)。
因為下標(biāo)是從0開始的,定義$i=0 。每次循環(huán)的時候讓$i 加1 ,但是必須要小於10,因為陣列下標(biāo)的最大值為9。
foreach 迴圈
#foreach 迴圈用於遍歷陣列。
語法
foreach ($array?as?$value)
{
要執(zhí)行程式碼;
}
array?代表一個數(shù)組變量,在每次迴圈執(zhí)行時,每個元素的值會被暫時賦給變數(shù)?value,?要執(zhí)行的程式碼?語句每次得到的?value?的值都不一樣。
另一個語法
foreach ($array?as?$key?=> $value)
{
要執(zhí)行程式碼;
}
key?代表數(shù)組的下標(biāo),value?代表數(shù)組的值,那麼對於數(shù)字下標(biāo)數(shù)組來說,每次循環(huán)中?key?的值就是從0開始子增長的數(shù)字。
實例
下面的實例示範(fàn)了一個輸出給定陣列的值的循環(huán):
<html> <body> <?php $x=array("one","two","three"); foreach ($x as $value) { echo $value . "<br>"; } ?> </body> </html>
輸出:
one
two
three
我們可以透過foreach遍歷連續(xù)的索引數(shù)組
<html> <body> <?php $cou = array( 0 => '中國', 100 => '美國', 20=> '韓國', 300 => '德國', ); foreach($cou as $key => $value) { echo $key . '------' . $value .'<br/>'; } ?> </body> </html>
?輸出:
0------中國?
100 ------美國?
20------韓國?
300------德國
若陣列裡面還有陣列, 該怎麼遍歷循環(huán)呢?
<?php $data = array( 0 => array( '中國' => 'china', '美國' => 'usa', '德國' => ' Germany', ), 1 => array( '湖北' => 'hubei', '河北' => 'hebei', '山東' => 'shandong', '山西' => 'sanxi', ), ); //注:我們在使用foreach循環(huán)時,第一次循環(huán)將鍵為0和鍵為1的兩個數(shù)組賦值給一個變量($value)。 //然后,再套一個循環(huán)遍歷這個$value變量,$value中的值取出來,賦值給$key和$v。 foreach($data as $value){ //第一次循環(huán)把國家的數(shù)組賦值給了$value //第二次循環(huán)把中國的省份的數(shù)組又賦值給了$value //因此,在循環(huán)的時候把$value再遍歷一次 foreach($value as $key => $v) { echo $key . '-----' . $v .'<br />'; } //為了看的更清晰,在中間加上華麗麗的分割線方便你來分析 echo '----------分割線-----------<br />'; } ?>
? ? ? ?
輸出:
中國-----china?
美國-----usa?
德國----- Germany?
----------分割線----- ------?
湖北-----hubei?
河北-----hebei?
山東-----shandong?
山西-----sanxi?
- ---------分割線-----------
總結(jié):
第一次循環(huán)的時候,將數(shù)組賦值給了$value,然後用foreach循環(huán)$value。將二維的子數(shù)組中的鍵給到$key,值賦值給變數(shù)$v。
第一次循環(huán)退出子陣列的循環(huán),執(zhí)行後續(xù)程式碼顯示分割線。
依此類推,第二次循環(huán)也是這樣。