การวนรอบ

การวนรอบ (loop) ใน PHP มี 4 แบบ คือ

  • while ตรวจสอบ แล้วค่อยวนรอบ
  • do...while ทำก่อน 1 ครั้งแล้วค่อยตรวจสอบ
  • for วนรอบตามจำนวนที่กำหนด
  • foreach วนรอบตามจำนวน element ใน array

while

while จะตรวจสอบค่าก่อน หากเป็นจริง จึงวนทำตามคำสั่งภายใน หากเป็นเท็จก็จะไม่วนรอบนั้น ๆ มักใช้ในกรณีที่ไม่รู้จำนวนรอบที่แน่นอน หรือไม่ต้องการหาจำนวนรอบก่อนที่จะวน เช่น วนรอบแสดงข้อมูลจากไฟล์ หรือฐานข้อมูลเป็นต้น while สามารถเขียนได้ 2 แบบ เช่นเดียวกับ switch

    <?php

    $num = 1;

    echo 'Count from 1 to 10: ';
    while ($num<=10) {
         echo $num . ', ';
         $num++;
    }

    $readable = false;
    while ($num <= 10):
         // this code is never execute.
         echo 'Reading file...';
    endwhile;

do...while

do...while จะทำตามคำสั่งใน do ก่อน 1 ครั้งแล้วค่อยตรวจสอบ หากยังเป็นจริงก็ทำใน do อีก โดยทั่วไปแล้วแทบไม่ต่างจาก while เลย แต่การใช้ do...while เพื่อให้มั่นใจว่า คำสั่งใน loop จะถูกสั่งแน่ ๆ อย่างน้อย 1 ครั้ง

    <?php

    $readable = false;
    $msg = 'Checking status...';
    do {
         // this code will execute ONLY one time.
         echo $msg . '&#60;br /&#62;';
         if ($readable == true) {
              $msg = 'Reading file...';
         }
    } while ($readable);

for

for จะวนตามจำนวนที่ระบุเอาไว้จนครบแล้วออกจากการวนรอบ มักใช้ในการวนรอบที่มีจำนวนแน่นอนซึ่งต่างจาก while และ do...while ที่มักใช้กับจำนวนรอบที่ไม่แน่นอน forสามารถเขียนได้ 2 แบบเหมือนกับ while

    <?php

    echo 'Count from 1 to 10: ';
    for($i = 0; $i <= 10; $i++) {
         echo $i . ', ';
    }

    // Same as above
    for($i = 0; $i <= 10; $i++):
         echo $i . ', ';
    endfor;

foreach

foreach ใช้ในการวนดูข้อมูลใน array เป็นหลัก เขียนได้ 2 แบบเช่นกัน

    <?php

    $all_subjects = array('Math', 'Science', 'Drawing');
    echo 'I learn ';
    foreach($all_subjects as $subj) {
         echo $subj . ', ';
    }

    // loop through Associative Arrays
    $instructors = array(
         'Math'    => 'Andre Marie Ampere',
         'Science' => 'Albert Einstein',
         'Drawing' => 'Leonardo da Vinci',

    );
    
    foreach($instructors as $subject => $teacher):
         echo $teacher . ' teach ' . $subject . '&#60;br /&#62;';
    endforeach;

    // you can change value in array by use reference prefix (&)
    $double_this = array(1, 2, 3, 4, 5);
    foreach($double_this as &$num) {
         $num = $num * 2;
    }
    // $double_this = array(2, 4, 6, 8, 10)

break และ continue

break จะเป็นการออกจากการวนรอบก่อนที่จะครบตามที่กำหนดไว้

    <?php

    // print: Count from 1 to 5: 1, 2, 3, 4, 5, 
    echo 'Count from 1 to 5: ';
    for($i = 0; $i <= 10; $i++) {
         if ($i > 5) {
              // break out of loop
              break;
         }
         echo $i . ', ';
    }

continue จะข้ามรอบนั้น ๆ ไป แต่ยังวนรอบอยู่เหมือนเดิม

    <?php

    // print: Simple even number: 2, 4, 6, 8, 10, 
    echo 'Simple even number: ';
    for($i = 1; $i <= 10; $i++) {
         if (($i % 2) == 1) {
              // Odd number? skip this loop
              continue;
         }
         echo $i . ', ';
    }

สรุปเรื่องคำสั่งทางเลือก

จากบทความเรื่อง if...else และ switch กับเรื่องการวนรอบ จะเห็นว่า ใน PHP จะมีคำสั่ง หรือ syntax ทางเลือกอยู่หลายแบบ สรุปรวมเท่าที่เขียนมาทั้งหมดจะมี

  • if...else ที่ใช้ if (): (ร่วมกับ else: และ/หรือ elseif ():) และปิดด้วย endif;
  • switch ที่ใช้ switch (): และปิดด้วย endswitch;
  • while ที่ใช้ while (): และปิดด้วย endwhile;
  • for ที่ใช้ for (): และปิดด้วย endfor;
  • foreach ที่ใช้ foreach (): และปิดด้วย endforeach;
blog comments powered by Disqus