---
# System prepended metadata

title: 9/21 迴圈（While、Do...While、For、Foreach）

---

# 9/21 迴圈（While、Do...While、For、Foreach）

> 當有需要重複執行的程式碼時，可以使用迴圈來處理，就可以省去多餘的程式碼
> 迴圈在判斷條件時會持續重複執行

[運算單位](https://na872043.pixnet.net/blog/post/161015093-php-%E5%9F%BA%E7%A4%8E%E6%95%99%E5%AD%B8(%E4%B8%89)---%E9%81%8B%E7%AE%97%E5%96%AE%E4%BD%8D)

### While迴圈

寫法:
```php=
while(條件判斷){
    程式碼
}
```
實作:
```php=

$int = 1;
while( $int < 5 ){

    echo $int;
    $int++;
    // 輸出
    // 1
    // 2
    // 3
    // 4

}

```

說明:

Step1. 判斷條件`$int`是否小於5
Step2. 條件未成立，停止迴圈，如果條件成立，執行程式碼並重複執行

---

### do...while迴圈

寫法:
```php=
do{
    程式碼
}while(條件判斷);
```
實作:
```php=

$int = 0;
do{

    echo $int++;
    // 輸出
    // 1
    // 2
    // 3
    // 4

}while($int < 5);

```
說明:

Step1. 執行程式碼
Step2. 判斷條件`$int`是否小於5，如果條件成立，停止迴圈

---

### For迴圈

寫法:

```php=
for(初始化變數;判斷條件;更改數值){
    程式碼
}
```
實作:
```php=

for($int = 0;$int < 5;$int ++){

    echo $int . " + 1";

    // 輸出
    // 0 + 1
    // 1 + 1
    // 2 + 1
    // 3 + 1
    // 4 + 1

}

```
說明:

Step1. 初始化變數`$int`的值為 0 
Step2. 判斷條件`$int`是否小於5，若條件未成立停止迴圈
Step3. 執行程式碼
Step4. 更改數值`$int`加1

---

### Foreach迴圈

說明:

foreach會將陣列內的所有元素取出來在每取出一次元素時執行程式碼，直到所有元素被取出過

寫法:
1. 取出索引(key)與值(value)

```php=
foreach(陣列 as 索引 => 值){
    程式碼
}
```
2. 只取值(value)

```php=
foreach(陣列 as 值){
    程式碼
}
```
實作:
```php=

$array = ['A' => 'apple' , 'B' => 'bee' , 'C' => 'cat'];

// 取出索引與值
foreach($array as $key => $value){

    echo $key . " asd " . $value;

    // 輸出
    // A asd apple
    // B asd bee
    // C asd cat
    
}

// 取出值
foreach($array as $value){

    echo $value;
        
    // 輸出
    // apple
    // bee
    // cat

}

```

---

題目:

1. 使用For 輸出1,3,5,7,9
2. 使用While 輸出9,7,5,3,1
3. 使用迴圈輸出一個一維陣列的座位表
例: 
    1 2 3 4 5 6 7 8 9 10 11 12.. 到50
4. 使用 Foreach 與下列的陣列 輸出 key 跟 value
```php=
$array = ['user1'=>'60','user2'=>'78','user3'=>'36','user4'=>'98'];
```
5. 一次只能輸出一個字，使用迴圈輸出以下字串
例:
    11111
    11111
    11111
    11111
    11111
    
6. 使用迴圈跑整數1-50，但只輸出大於25 且小於45的
[下一篇](/01Jelx7ATvWYtEmE701gyQ)