---
# System prepended metadata

title: PHP快速入門 3 -- 迴圈控制
tags: [PHP]

---

---
tags: PHP
---
# PHP快速入門 3 -- 迴圈控制

## for 前測式迴圈
:::info
for (初始值; 執行條件; 變數更新) {
&nbsp;&nbsp;&nbsp;&nbsp;敘述句;
}
:::
:::success
常用在已知執行次數
:::

![](https://i.imgur.com/dxQx7Hp.png)


## while 前測式迴圈
:::info
while (執行條件) {
&nbsp;&nbsp;&nbsp;&nbsp;敘述句;
}
:::

## do...while 後測式迴圈
:::info
do {
&nbsp;&nbsp;&nbsp;&nbsp;敘述句;
} while (執行條件)
:::

* rand(min, max)：產生min到max的亂數

練習：
設計抽彩票程式:每次抽獎金額為0~10元不等，直到抽中0元就不能繼續抽，最後累加抽中多少金額
![](https://i.imgur.com/kU9UT28.png)

![](https://i.imgur.com/4rCpyP8.png)

## foreach
用 foreach 重複造訪陣列內容，便可根據陣列內容進行處理
```php=
foreach ($array as $key => $value) {
  echo "{$key} => {$value}";
}
```
```php=
foreach ($array as $value) {
  echo "<p>{$value}[索引值]</p>";
}
```

### 取出陣列索引與值
:::info
* foreach($array as $val) {
&nbsp;&nbsp;&nbsp;&nbsp;迴圈內敘述;
}  

* foreach($array as $key => $val) {
&nbsp;&nbsp;&nbsp;&nbsp;迴圈內敘述;
} 

* while (list(\$key,\$val) = each ($array)){
&nbsp;&nbsp;&nbsp;&nbsp;迴圈內敘述;
}
:::
* print_r($array)：一次印出所有陣列的索引與值 
http://www.wibibi.com/info.php?tid=247
> 要印出所有陣列的值，無法用 echo，但可以用 echo $array[1];
> (因為 $array[1] 為一字串/數字)
* unset( )：清除任何變數，釋放記憶體
* reset($array)：使指標回到最前面
>前面foreach已經從頭取出陣列值到最後，接下來要用while迴圈時，要把指標回到最前面。foreach迴圈本身在使用時，就會把指標拉回最前面

* 雙引號內會自動抓並剖析變數的值

範例：
![](https://i.imgur.com/PzPUzIr.png)

![](https://i.imgur.com/cq6TYN5.png)