PHP For 循環(huán)
循環(huán)執(zhí)行代碼塊指定的次數(shù),或者當(dāng)指定的條件為真時(shí)循環(huán)執(zhí)行代碼塊。
for 循環(huán)
語法
for (初始值; 條件; 增量)
{
要執(zhí)行的代碼;
}
參數(shù):
? 初始值:是初始化賦值,可以同時(shí)賦值多個(gè)代碼。
? 條件:在每次循環(huán)開始前求值。如果值為 TRUE,則繼續(xù)循環(huán),執(zhí)行嵌套的循環(huán)語句。如果值為 FALSE,則終止循環(huán)。
? 增量:在每次循環(huán)之后被求值。
注釋:上面的初始值和增量參數(shù)可為空,或者有多個(gè)表達(dá)式(用逗號(hào)分隔)。
實(shí)例
下面的實(shí)例定義一個(gè)初始值為 i=1 的循環(huán)。只要變量 i 小于或者等于 5,循環(huán)將繼續(xù)運(yùn)行。循環(huán)每運(yùn)行一次,變量 i 就會(huì)遞增 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)是一個(gè)單純的計(jì)數(shù)型循環(huán),而索引數(shù)組的下標(biāo)為整型的數(shù)值。 因此,我們可以通過for循環(huán)來遍歷索引數(shù)組。
<?php //聲明一個(gè)數(shù)組,值為1到10 $num = array(1,2,3,4,5,6,7,8,9,10); //按照索引數(shù)組的特點(diǎn),下標(biāo)從0開始。所以1的下標(biāo)為0,10的下標(biāo)為9 echo $num[0].'<br />'; echo $num[9].'<br />'; //我們可以得到數(shù)組中元素的總個(gè)數(shù),為10 echo count($num); //遍歷這個(gè)索引數(shù)組的話,我們就可以定義一個(gè)變量為$i //$i 的值為0,從0開始 //可以設(shè)定一個(gè)循環(huán)條件為:$i 在下標(biāo)的(9)最大值之內(nèi)循環(huán) for($i = 0; $i < count($num); $i++) { echo $num[$i].'<br />'; } ?>
通過上面的例子,我們就把數(shù)組進(jìn)行了循環(huán)。
因?yàn)橄聵?biāo)是從0開始的,定義$i=0 。每次循環(huán)的時(shí)候讓$i 加1 ,但是必須要小于10,因?yàn)閿?shù)組下標(biāo)的最大值為9。
foreach 循環(huán)
foreach 循環(huán)用于遍歷數(shù)組。
語法
foreach ($array as $value)
{
要執(zhí)行代碼;
}
array 代表一個(gè)數(shù)組變量,在每次循環(huán)執(zhí)行時(shí),每個(gè)元素的值會(huì)被臨時(shí)賦給變量 value, 要執(zhí)行的代碼 語句每次獲取到的 value 的值都不一樣。
另一種語法
foreach ($array as $key => $value)
{
要執(zhí)行代碼;
}
key 代表數(shù)組的下標(biāo),value 代表數(shù)組的值,那么對(duì)于數(shù)字下標(biāo)數(shù)組來說,每次循環(huán)中 key 的值就是從0開始子增長的數(shù)字。
實(shí)例
下面的實(shí)例演示了一個(gè)輸出給定數(shù)組的值的循環(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------德國
如果數(shù)組里面還有數(shù)組, 該怎么遍歷循環(huán)呢?
<?php $data = array( 0 => array( '中國' => 'china', '美國' => 'usa', '德國' => ' Germany', ), 1 => array( '湖北' => 'hubei', '河北' => 'hebei', '山東' => 'shandong', '山西' => 'sanxi', ), ); //注:我們?cè)谑褂胒oreach循環(huán)時(shí),第一次循環(huán)將鍵為0和鍵為1的兩個(gè)數(shù)組賦值給一個(gè)變量($value)。 //然后,再套一個(gè)循環(huán)遍歷這個(gè)$value變量,$value中的值取出來,賦值給$key和$v。 foreach($data as $value){ //第一次循環(huán)把國家的數(shù)組賦值給了$value //第二次循環(huán)把中國的省份的數(shù)組又賦值給了$value //因此,在循環(huán)的時(shí)候把$value再遍歷一次 foreach($value as $key => $v) { echo $key . '-----' . $v .'<br />'; } //為了看的更清晰,在中間加上華麗麗的分割線方便你來分析 echo '----------分割線-----------<br />'; } ?>
輸出:
中國-----china
美國-----usa
德國----- Germany
----------分割線-----------
湖北-----hubei
河北-----hebei
山東-----shandong
山西-----sanxi
----------分割線-----------
總結(jié):
第一次循環(huán)的時(shí)候,將數(shù)組賦值給了$value,然后用foreach循環(huán)$value。將二維的子數(shù)組中的鍵給到$key,值賦值給變量$v。
第一次循環(huán)退出子數(shù)組的循環(huán),執(zhí)行后續(xù)代碼顯示分割線。
依此類推,第二次循環(huán)也是這樣。