หลังจากเราเข้าใจการทำงานของคำสั่งวนรอบแล้ว ทีนี้ก็มาถึงวิธีการควบคุมการทำงานของคำสั่งวนรอบแล้ว ซึ่งก็มีเพียง 2 คำสั่งคือ
- break
- continue
สำหรับคำสั่งควบคุมนี้ ต้องใช้งานร่วมกับคำสั่งเงื่อนไขภายในลูปควบคุมการทำงาน
คำสั่ง break
จะทำให้ลูปที่กำลังทำงานนั้น หยุดลงทันที ใช้ร่วมกับ for, foreach, while, do while, switch โดยเฉพาะ switch นั้น ต้องใส่ break สำหรับแต่ละ case ด้วย ไม่เช่นนั้นจะทำงานไปเรื่อยๆ จนหมด switch ลองดูตัวอย่างกันเลยล่ะกันครับ
<?php for ($i = 0; $i < 10; $i++ ) { if ($i == 5) { break; } echo $i; } ?>
จากตัวอย่าง for ถูกให้ทำงานเป็นจำนวน 10 รอบ แต่ภายในลูปมีเงื่อนไขอยู่ ถ้าหากวนไปไ้ด้ถึง 5 รอบก็จะตรงกับเงื่อนไขที่ตั้งไว้ คำสั่ง break จะถูกเรียกใช้งาน ทำให้ for หยุดทำงาน ทำให้ผลลัพท์ที่ได้เป็น 01234
คำสั่ง continue
เหมือนกับ break ทุกๆ อย่างเลยครับ เพียงแต่จะหยุดทำงานในรอบนั้นๆ แล้วทำงานรอบต่อไปจนหมดลูปแทน จากโค๊ดข้างบน ถ้าเปลี่ยนจาก break เป็น continue โปรแกรมก็จะข้ามการทำงานเมื่อวนไปได้ถึงรอบที่ 5 ทำให้ผลลัพท์เป็น 012346789 แทน
<?php for ($i = 0; $i < 10; $i++ ) { if ($i == 5) { continue; } echo $i; } ?>
ต้องลองเล่นดูบ่อยๆ ครับ ถึงจะเห็นประโยชน์ของมัน
โจทย์ขำๆ ครับ ลองคิดกันเล่นๆ ดีกว่า
<?php // พิมพ์ 1 - 100 ยกเว้นเลขที่หาร 2 หรือ 5 ลงตัว for ($i = 1; $i < 100; $i++ ) { if (($i % 2 == 0) || ($i % 3 == 0)) { continue; } echo $i . "<br />"; } ?>
มาลองคิดกันดูครับ ว่าจะได้ผลลัพท์อะไร
<?php // อันนี้ไม่ยากเท่าไหร่ครับ $count = 0; for ($i = 6; $i > $count; $i--, ++$count ) { echo $count . "<br />"; } ?>
<?php // ยากขึ้นมาอีกนิดนึง $x = 0; $y = 0; for ($z = 0; $z < 5; $z++ ) { if (( ++$x > 2) || (++$y > 2)) { $x++; } } echo "X = " . $x; echo "<br />"; echo "Y = " . $y; ?>
จริงๆ ทั้งสองคำสั่งนี้ มันไม่มีอะไรให้เล่นเลยอ่ะครับ อีกอย่าง ก็เผากันสุดๆ เลย (ไม่รู้จะเขียนยังไงเหมือนกัน) ก็ทำความเข้าใจกันไว้ครับ เพราะยังไงก็ได้ใช้งานแน่นอน แต่อาจจะไม่บ่อยเท่าไหร่
แล้วพบกันใหม่ โอกาสหน้าครับ