PHP For 循環(huán)
循環(huán)執(zhí)行代碼塊指定的次數(shù),或者當指定的條件為真時循環(huán)執(zhí)行代碼塊。
for 循環(huán)
語法
for (初始值; 條件; 增量)
{
要執(zhí)行的代碼;
}
參數(shù):
??初始值:是初始化賦值,可以同時賦值多個代碼。
??條件:在每次循環(huán)開始前求值。如果值為 TRUE,則繼續(xù)循環(huán),執(zhí)行嵌套的循環(huán)語句。如果值為 FALSE,則終止循環(huán)。
??增量:在每次循環(huán)之后被求值。
注釋:上面的初始值和增量參數(shù)可為空,或者有多個表達式(用逗號分隔)。
實例
下面的實例定義一個初始值為 i=1 的循環(huán)。只要變量?i?小于或者等于 5,循環(huán)將繼續(xù)運行。循環(huán)每運行一次,變量?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é)我們學習了數(shù)組,而for循環(huán)是一個單純的計數(shù)型循環(huán),而索引數(shù)組的下標為整型的數(shù)值。 因此,我們可以通過for循環(huán)來遍歷索引數(shù)組。
<?php //聲明一個數(shù)組,值為1到10 $num = array(1,2,3,4,5,6,7,8,9,10); //按照索引數(shù)組的特點,下標從0開始。所以1的下標為0,10的下標為9 echo $num[0].'<br />'; echo $num[9].'<br />'; //我們可以得到數(shù)組中元素的總個數(shù),為10 echo count($num); //遍歷這個索引數(shù)組的話,我們就可以定義一個變量為$i //$i 的值為0,從0開始 //可以設(shè)定一個循環(huán)條件為:$i 在下標的(9)最大值之內(nèi)循環(huán) for($i = 0; $i < count($num); $i++) { echo $num[$i].'<br />'; } ?>
通過上面的例子,我們就把數(shù)組進行了循環(huán)。
因為下標是從0開始的,定義$i=0 。每次循環(huán)的時候讓$i 加1 ,但是必須要小于10,因為數(shù)組下標的最大值為9。
foreach 循環(huán)
foreach 循環(huán)用于遍歷數(shù)組。
語法
foreach ($array?as?$value)
{
要執(zhí)行代碼;
}
array?代表一個數(shù)組變量,在每次循環(huán)執(zhí)行時,每個元素的值會被臨時賦給變量?value,?要執(zhí)行的代碼?語句每次獲取到的?value?的值都不一樣。
另一種語法
foreach ($array?as?$key?=> $value)
{
要執(zhí)行代碼;
}
key?代表數(shù)組的下標,value?代表數(shù)組的值,那么對于數(shù)字下標數(shù)組來說,每次循環(huán)中?key?的值就是從0開始子增長的數(shù)字。
實例
下面的實例演示了一個輸出給定數(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', ), ); //注:我們在使用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,值賦值給變量$v。
第一次循環(huán)退出子數(shù)組的循環(huán),執(zhí)行后續(xù)代碼顯示分割線。
依此類推,第二次循環(huán)也是這樣。