PHP มีโครงสร้างควบคุมการทำงานมาตรฐาน ทั้ง conditionals (, , ), loops (, , ) และการแยกสาขา (, ) รวมถึงคุณสมบัติเฉพาะตัวบางอย่าง เช่น สำหรับอาร์เรย์ และ expression สมัยใหม่
ifswitchmatchforforeachwhilebreakcontinueforeachmatch<?php
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} else {
$grade = "F";
}
// ternary and null coalescing
$status = $age >= 18 ? "adult" : "minor";
$name = $input ?? "default"; // ?? — use default if null/unset (PHP 7+)
$value ??= "x"; // ??= assign if null (PHP 7.4)
null coalescing operator ?? ถูกใช้อย่างหนักใน PHP สำหรับการกำหนดค่าเริ่มต้น (คืนค่าฝั่งขวาถ้าฝั่งซ้ายเป็น null หรือยังไม่ได้กำหนด) ซึ่งสะอาดกว่าการตรวจสอบด้วย isset()
switch ($day) {
case "Sat":
case "Sun":
$type = "weekend"; break; // ⚠️ break needed or it falls through
default:
$type = "weekday";
}
// match (PHP 8) — cleaner: returns a value, STRICT comparison, NO fall-through
$type = match($day) {
"Sat", "Sun" => "weekend", // multiple values, no break needed
default => "weekday",
};
match expression (PHP 8) เป็นการพัฒนาที่ทันสมัยกว่า switch: มันคืนค่า, ใช้การเปรียบเทียบแบบเข้มงวด (===) และไม่มี fall-through (ไม่ต้องใช้ break) จึงนิยมใช้ในโค้ดใหม่
for ($i = 0; $i < 10; $i++) { }
foreach ($items as $item) { } // iterate array values
foreach ($map as $key => $value) { } // keys + values — the PHP idiom for arrays
while ($condition) { }
do { } while ($condition);
foreach เป็นลูปที่ใช้บ่อยที่สุดและเป็นมาตรฐานใน PHP สำหรับการวนซ้ำอาร์เรย์ (พร้อมรูปแบบ $key => $value สำหรับ associative array)
foreach ($items as $item) {
if ($item->skip) continue; // skip to next iteration
if ($item->stop) break; // exit the loop
}
Control flow เป็นกลไกพื้นฐานในการแสดงตรรกะ ถูกใช้ในทุกโปรแกรม ดังนั้นการเข้าใจโครงสร้างเหล่านี้ของ PHP จึงเป็นความรู้พื้นฐานที่จำเป็น
ส่วนใหญ่เป็นมาตรฐาน แต่มีบางจุดที่เป็นเอกลักษณ์ของ PHP ที่สำคัญ: foreach เป็นลูปหลักที่ใช้บ่อยสำหรับการวนซ้ำอาร์เรย์ที่พบเห็นได้ทั่วไปของ PHP (พร้อมรูปแบบ $key => $value สำหรับ map); null coalescing operator ?? (และ ??=) ถูกใช้อย่างหนักในการจัดการค่าเริ่มต้นอย่างสะอาดตา (เป็นสำนวนเฉพาะของ PHP); และ match expression สมัยใหม่ (PHP 8) เป็นการพัฒนาที่สำคัญเหนือ switch ที่มีโอกาสเกิดข้อผิดพลาดได้ง่าย (คืนค่า, ใช้การเปรียบเทียบแบบเข้มงวด และกำจัดบั๊กจาก fall-through ซึ่งเป็นกับดักคลาสสิกของ switch ที่ลืมใส่ break)
การรู้จักโครงสร้างเหล่านี้ และเลือกใช้รูปแบบที่ทันสมัยและปลอดภัยกว่า (match แทน switch, ?? สำหรับค่าเริ่มต้น) เป็นความรู้พื้นฐานในการเขียนตรรกะ PHP ที่สะอาด ถูกหลักการ และปราศจากบั๊ก สะท้อนความคล่องแคล่วทั้งกับพื้นฐานและการพัฒนาของ PHP สมัยใหม่