การพัฒนาโปรแกรมด้วยภาษา PHP จำเป็นต้องอาศัย “โครงสร้างควบคุม” (Control Structures) เพื่อกำหนดลำดับการทำงานของโปรแกรม ไม่ว่าจะเป็นการตัดสินใจตามเงื่อนไข หรือการทำงานซ้ำตามจำนวนรอบที่กำหนด โครงสร้างเหล่านี้ช่วยให้โปรแกรมสามารถทำงานได้อย่างยืดหยุ่น มีประสิทธิภาพ และตอบสนองต่อสถานการณ์ต่าง ๆ ได้อย่างเหมาะสม
เนื้อหาในบทนี้ประกอบด้วย:
if, else, switch)for, while, do-while)foreachโครงสร้างเงื่อนไข (Conditional Structure) ใช้สำหรับตรวจสอบสถานะหรือเงื่อนไขที่กำหนด และสั่งให้โปรแกรมทำงานแตกต่างกันตามผลลัพธ์ของเงื่อนไขนั้นๆ
คำสั่ง if ใช้ตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ หากเงื่อนไขเป็นจริง โปรแกรมจะทำงานภายในบล็อกคำสั่งทันที
รูปแบบคำสั่ง:
if (เงื่อนไข) {
// คำสั่งเมื่อเงื่อนไขเป็นจริง
}ตัวอย่างการใช้งาน:
<?php
$score = 85;
if ($score >= 80) {
echo "คุณได้เกรด A";
}
?>ใช้เมื่อมี 2 เส้นทางหรือ 2 กรณีในการตัดสินใจ หากเงื่อนไขในช่อง if ไม่เป็นจริง (เป็นเท็จ) โปรแกรมจะข้ามมาทำงานในบล็อกของ else แทน
ตัวอย่างการใช้งาน:
<?php
$age = 15;
if ($age >= 18) {
echo "คุณสามารถเข้าร่วมกิจกรรมได้";
} else {
echo "คุณยังไม่สามารถเข้าร่วมกิจกรรมได้";
}
?>ใช้สำหรับตรวจสอบกรณีที่มีหลากหลายเงื่อนไขให้เลือก โดยโปรแกรมจะไล่เช็คทีละเงื่อนไขและเลือกทำงานในบล็อกแรกที่ผลการตรวจสอบเป็นจริงเท่านั้น
ตัวอย่างการใช้งาน:
<?php
$score = 65;
if ($score >= 80) {
echo "เกรด A";
} elseif ($score >= 70) {
echo "เกรด B";
} elseif ($score >= 60) {
echo "เกรด C";
} else {
echo "เกรด F";
}
?>กรณีที่ 1: ตรวจสอบเลขคู่หรือเลขคี่
<?php
$number = 7;
if ($number % 2 == 0) {
echo "even number";
} else {
echo "odd number";
}
?>กรณีที่ 2: ตรวจสอบจำนวนบวก ลบ หรือศูนย์ (Nested Conditions)
<?php
$number = -5;
if ($number > 0) {
if ($number % 2 == 0) {
echo "positive even number";
} else {
echo "positive odd number";
}
} elseif ($number < 0) {
if ($number % 2 == 0) {
echo "negative even number";
} else {
echo "negative odd number";
}
} else {
echo "The number is zero";
}
?>คำสั่ง switch ใช้ตรวจสอบค่าของตัวแปรที่มีการระบุค่าแน่นอนไว้หลายกรณี และเลือกทำงานตามบล็อกคำสั่งที่ตรงกับค่านั้น ๆ
ตัวอย่างการใช้งาน:
<?php
$day = "Wednesday";
switch ($day) {
case "Monday":
echo "วันนี้เป็นวันจันทร์";
break;
case "Tuesday":
echo "วันนี้เป็นวันอังคาร";
break;
case "Wednesday":
echo "วันนี้เป็นวันพุธ";
break;
default:
echo "วันนี้ไม่ตรงกับวันที่ระบุ";
break;
}
?>เปรียบเทียบความแตกต่างระหว่าง if-else และ switch
| โครงสร้างแบบ if-else | โครงสร้างแบบ switch |
|---|---|
| เหมาะกับเงื่อนไขที่ซับซ้อน หรือมีช่วงข้อมูลเป็นวงกว้าง | เหมาะกับตัวแปรที่มีค่าคงที่ชัดเจนในหลาย ๆ กรณี |
| ใช้ตัวดำเนินการเปรียบเทียบตรรกะได้หลากหลาย (>, <, &&, ||) | ทำความเข้าใจได้ง่ายกว่าเมื่อต้องการสร้างโครงสร้างเคสเยอะ ๆ |
| มีความยืดหยุ่นในการเขียนระบบสูงมาก | ทำให้โค้ดเป็นระเบียบกระชับและไม่ซ้อนกันจนลายตา |
โครงสร้างวนซ้ำใช้สำหรับทำคำสั่งงานเดิม ๆ ซ้ำกันไปเรื่อย ๆ ตามค่าที่กำหนด ช่วยลดบรรทัดความซ้ำซ้อนของชุดคำสั่งให้เหลือเพียงไม่กี่บรรทัด
เหมาะอย่างยิ่งสำหรับกรณีที่เรา "ทราบจำนวนรอบที่แน่นอนอยู่แล้ว" ก่อนเริ่มรันโปรแกรม
<?php
for ($i = 1; $i <= 5; $i++) {
echo "รอบที่ $i<br>";
}
?>ใช้ในกรณีที่ "จำนวนรอบไม่แน่นอน" แต่มีเงื่อนไขปลายทางเป็นตัวควบคุมลูป หากเงื่อนไขยังเป็นจริง ลูปก็จะทำงานต่อไปเรื่อย ๆ
<?php
$i = 1;
while ($i <= 5) {
echo "รอบที่ $i<br>";
$i++;
}
?>มีลักษณะคล้ายคำสั่ง while แต่มีจุดต่างสำคัญคือ ลูปนี้จะสั่งงานก่อนอย่างน้อย 1 ครั้ง เสมอ แล้วจึงค่อยไปตรวจสอบเงื่อนไขในตอนท้าย
<?php
$i = 1;
do {
echo "รอบที่ $i<br>";
$i++;
} while ($i <= 5);
?>สรุปเปรียบเทียบการใช้งานโครงสร้างลูปทั้ง 3 รูปแบบ
| คำสั่งลูป | ความเหมาะสมต่อรูปแบบการนำไปใช้ |
|---|---|
| for | ใช้เมื่อรู้จำนวนรอบในการรันคำสั่งซ้ำอย่างแน่นอนชัดเจน |
| while | ใช้เมื่อไม่รู้รอบที่ชัดเจน แต่อิงตามความจริงของเงื่อนไขเป็นหลัก |
| do-while | ใช้ในกรณีที่จำเป็นต้องมีการทำงานชุดแรกก่อนตรวจสอบความถูกต้อง (รันอย่างน้อยหนึ่งครั้งแน่ๆ) |
คำสั่ง foreach เป็นโครงสร้างที่ออกแบบมาสำหรับใช้วนซ้ำเพื่อดึงข้อมูลใน อาร์เรย์ (Array) ออกมาแสดงโดยเฉพาะ ช่วยตัดปัญหาเรื่องการกำหนดตัวชี้และทำให้เขียนโค้ดได้สั้นลง
ตัวอย่าง 1: การดึงค่า (Value) จากอาร์เรย์ทั่วไป
<?php
$fruits = ["แอปเปิล", "กล้วย", "ส้ม"];
foreach ($fruits as $fruit) {
echo "ผลไม้: $fruit<br>";
}
?>ตัวอย่าง 2: การดึงทั้งคีย์ (Key) และค่า (Value) มาจากอาร์เรย์แบบจับคู่
<?php
$person = [
"ชื่อ" => "สมชาย",
"อายุ" => 30,
"อาชีพ" => "โปรแกรมเมอร์"
];
foreach ($person as $key => $value) {
echo "$key: $value<br>";
}
?>ตัวอย่าง 3: การรัน foreach ซ้อนลูปกับอาร์เรย์หลายมิติ (Multi-dimensional Array)
<?php
$students = [
["ชื่อ" => "สมชาย", "เกรด" => "A"],
["ชื่อ" => "สมหญิง", "เกรด" => "B"]
];
foreach ($students as $student) {
foreach ($student as $key => $value) {
echo "$key: $value ";
}
echo "<br>";
}
?>โครงสร้างควบคุมในภาษา PHP ถือเป็นกระดูกชิ้นสำคัญของการเขียนระบบเพื่อให้ซอฟต์แวร์ตัดสินใจและทำงานซ้ำได้อย่างถูกต้อง การเลือกดึงคุณสมบัติของ if, switch, for, while, do-while และ foreach มาใช้งานให้ตรงกับโจทย์ จะทำให้โค้ดเป็นระบบ อ่านง่าย ดูแลรักษาง่าย และพร้อมสำหรับการก้าวไปสู้ผู้พัฒนาเว็บแอปพลิเคชันขั้นสูง