迴圈執行程式碼區塊指定的次數,或當指定的條件為真時循環執行程式碼區塊。
for 迴圈
語法
#for (初始值; 條件; 增量)
{
要執行的程式碼;
}
參數:
• 初始值:是初始化賦值,可以同時賦值多個程式碼。
• 條件:在每次循環開始前求值。如果值為 TRUE,則繼續循環,執行巢狀的循環語句。如果值為 FALSE,則終止迴圈。
• 增量:在每次循環之後被求值。
註解:上面的初始值和增量參數可為空,或有多個表達式(以逗號分隔)。
實例
下面的實例定義一個初始值為 i=1 的迴圈。只要變數 i 小於或等於 5,循環將繼續運作。循環每運行一次,變數 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
前面章節我們學習了數組,而for循環是一個單純的計數型循環,而索引數組的下標為整數的數值。 因此,我們可以透過for迴圈來遍歷索引數組。
<?php //声明一个数组,值为1到10 $num = array(1,2,3,4,5,6,7,8,9,10); //按照索引数组的特点,下标从0开始。所以1的下标为0,10的下标为9 echo $num[0].'<br />'; echo $num[9].'<br />'; //我们可以得到数组中元素的总个数,为10 echo count($num); //遍历这个索引数组的话,我们就可以定义一个变量为$i //$i 的值为0,从0开始 //可以设定一个循环条件为:$i 在下标的(9)最大值之内循环 for($i = 0; $i < count($num); $i++) { echo $num[$i].'<br />'; } ?>
透過上面的例子,我們就把陣列進行了循環。
因為下標是從0開始的,定義$i=0 。每次循環的時候讓$i 加1 ,但是必須要小於10,因為陣列下標的最大值為9。
foreach 迴圈
#foreach 迴圈用於遍歷陣列。
語法
foreach ($array as $value)
{
要執行程式碼;
}
array 代表一個數組變量,在每次迴圈執行時,每個元素的值會被暫時賦給變數 value, 要執行的程式碼 語句每次得到的 value 的值都不一樣。
另一個語法
foreach ($array as $key => $value)
{
要執行程式碼;
}
key 代表數組的下標,value 代表數組的值,那麼對於數字下標數組來說,每次循環中 key 的值就是從0開始子增長的數字。
實例
下面的實例示範了一個輸出給定陣列的值的循環:
<html> <body> <?php $x=array("one","two","three"); foreach ($x as $value) { echo $value . "<br>"; } ?> </body> </html>
輸出:
one
two
three
我們可以透過foreach遍歷連續的索引數組
<html> <body> <?php $cou = array( 0 => '中国', 100 => '美国', 20=> '韩国', 300 => '德国', ); foreach($cou as $key => $value) { echo $key . '------' . $value .'<br/>'; } ?> </body> </html>
輸出:
0------中國
100 ------美國
20------韓國
300------德國
若陣列裡面還有陣列, 該怎麼遍歷循環呢?
<?php $data = array( 0 => array( '中国' => 'china', '美国' => 'usa', '德国' => ' Germany', ), 1 => array( '湖北' => 'hubei', '河北' => 'hebei', '山东' => 'shandong', '山西' => 'sanxi', ), ); //注:我们在使用foreach循环时,第一次循环将键为0和键为1的两个数组赋值给一个变量($value)。 //然后,再套一个循环遍历这个$value变量,$value中的值取出来,赋值给$key和$v。 foreach($data as $value){ //第一次循环把国家的数组赋值给了$value //第二次循环把中国的省份的数组又赋值给了$value //因此,在循环的时候把$value再遍历一次 foreach($value as $key => $v) { echo $key . '-----' . $v .'<br />'; } //为了看的更清晰,在中间加上华丽丽的分割线方便你来分析 echo '----------分割线-----------<br />'; } ?>
輸出:
中國-----china
美國-----usa
德國----- Germany
----------分割線----- ------
湖北-----hubei
河北-----hebei
山東-----shandong
山西-----sanxi
- ---------分割線-----------
總結:
第一次循環的時候,將數組賦值給了$value,然後用foreach循環$value。將二維的子數組中的鍵給到$key,值賦值給變數$v。
第一次循環退出子陣列的循環,執行後續程式碼顯示分割線。
依此類推,第二次循環也是這樣。