PHP กับการวนซ้ำ

PHP การการทำงานแบบวนลูป (Loop) 
การวนลูปเป็นเทคนิคในงานเขียนโปรแกรมที่ช่วยลดระยะเวลาในการทำสิ่งที่ต้องทำซ้ำแล้วซ้ำอีกหลายๆ รอบ เช่นการสร้างตารางแสดงสถิติคะแนนของนักเรียน ถ้ามีนักเรียนอยู่ 100 คน การที่เราจะมานั่งเขียนโค๊ดหลายร้อยบรรทัดเพื่อแสดงข้อมูลเหล่านี้นั้น จึงเป็นอะไรที่ซ้ำซ้อนเกินไป

ดังนั้น เราจึงต้องใช้คำสั่งในการวนลูปข้อมูลออกมาแสดงตามรูปแบบที่เรากำหนด เพื่อย่นระยะเวลาในการทำงานที่ซ้ำๆ ซึ่งคำสั่งที่ผมชอบใช้จะมี  for(), foreach(), while() ซึ่งจะเป็นคำสั่งที่ใช้งานง่ายๆครับ และส่วนใหญ่การวนลูปมักจะได้ใช้กับข้อมูลที่เป็นอาร์เรย์นะครับ

ตัวอย่างที่ 1 ฟังก์ชั่น for()
?
1
2
3
4
5
echo "<pre>";
for($i=0;$i<=10;$i++){
 echo "ลำดับที่ $i \n";
}
echo "</pre>";


ผลลัพธ์
ลำดับที่ 0
 ลำดับที่ 1
 ลำดับที่ 2
 ลำดับที่ 3
 ลำดับที่ 4
 ลำดับที่ 5
 ลำดับที่ 6
 ลำดับที่ 7
 ลำดับที่ 8
 ลำดับที่ 9
 ลำดับที่ 10 


ตัวอย่างการสร้างตัวเลือกเดือน
       การสร้างตัวเลือกเดือน ที่เป็น select box เราจะต้องพิมพ์แท็ก option อยู่ทั้งหมด 12 ครั้งด้วยกัน ซึ่งจะเสียเวลาพิมพ์ ซ้ำกันหลายครั้ง  


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select name="selMonth">
  <option value="มกราคม">มกราคม</option>
<option value="กุมภาพันธ์">กุมภาพันธ์</option>
 <option value="มีนาคม">มีนาคม</option>
 <option value="เมษายน">เมษายน</option>
 <option value="พฤษภาคม">พฤษภาคม</option>
 <option value="มิถุนายน">มิถุนายน</option>
 <option value="กรกฎาคม">กรกฎาคม</option>
 <option value="สิงหาคม">สิงหาคม</option>
 <option value="กันยายน ">กันยายน </option>
 <option value="ตุลาคม">ตุลาคม</option>
 <option value="พฤศจิกายน">พฤศจิกายน</option>
 <option value="ธันวาคม">ธันวาคม</option>
</select>


เราเปลี่ยนจากการพิมพ์ด้วยมือ มาเป็นใช้ฟังก์ชั่น for ของ PHP มาช่วยงานแทน 

?
1
2
3
4
5
6
7
8
9
10
<?php
$month array('''มกราคม''กุมภาพันธ์''มีนาคม''เมษายน''พฤษภาคม','มิถุนายน''กรกฎาคม''สิงหาคม''กันยายน ''ตุลาคม''พฤศจิกายน','ธันวาคม');
echo '<pre><b><u>ตัวอย่างการสร้างตัวเลือกเดือน</u></b>'"\n\n";
echo 'เดือน :: <select name="selMonth">';
for($i=1;$i<=12;$i++) {
    echo '<option value="'.$month[$i].'">'$month[$i] .'</option>'."\n";
}
echo '</select>';
echo '<pre>';
?>

จะได้ผลลัพธ์ดังนี้