ทำให้สคริปต์ของคุณตอบสนองด้วย if และ match แล้วทำงานซ้ำ ๆ ด้วย for, foreach และ while
เปิดบทเรียนนี้ใน Kodokonเงื่อนไข (condition) ช่วยให้สคริปต์เลือกเส้นทางได้ “ถ้าสิ่งนี้เป็นจริง ให้ทำสิ่งนั้น มิฉะนั้นให้ทำอีกอย่าง” คำสงวน if ทดสอบนิพจน์ที่ให้ผลเป็น true หรือ false โดยใช้ ตัวดำเนินการเปรียบเทียบ ได้แก่ > (มากกว่า), < (น้อยกว่า), >=, <=, === (เท่ากัน ทั้งค่าและชนิดเดียวกัน) และ !== (ไม่เท่ากัน) elseif เพิ่มการทดสอบอีกอันหากอันก่อนหน้าไม่ผ่าน และ else จะทำงานเมื่อไม่มีการทดสอบใดสำเร็จ การทดสอบอ่านจากบนลงล่าง อันแรกที่เป็นจริงจะชนะ
<?php
$temperature = 12;
if ($temperature > 25) {
echo "It's hot.";
} elseif ($temperature > 15) {
echo "It's mild.";
} else {
echo "Grab a jacket!";
}เมื่อคุณเปรียบเทียบตัวแปรเดียวกันกับค่าเฉพาะหลาย ๆ ค่า นิพจน์ match จะดูสง่างามกว่า มันเปรียบเทียบตัวแปรกับแต่ละกรณี (การเปรียบเทียบอย่างเข้มงวด ทั้งค่าและชนิด) แล้ว คืนค่ากลับมาโดยตรง ซึ่งคุณสามารถเก็บไว้ในตัวแปรได้ กรณี default ทำหน้าที่เป็นตาข่ายนิรภัยเมื่อไม่มีค่าใดตรงกัน
<?php
$day = "saturday";
$message = match ($day) {
"saturday", "sunday" => "It's the weekend!",
"monday" => "Hang in there, back to work.",
default => "Have a good weekday.",
};
echo $message;ลูป (loop) ทำบล็อกคำสั่งซ้ำหลาย ๆ ครั้งโดยไม่ต้องคัดลอกโค้ด ลูป for เหมาะอย่างยิ่งเมื่อคุณทราบจำนวนรอบล่วงหน้า มันอ่านได้เป็นสามส่วนที่คั่นด้วยเครื่องหมายอัฒภาค ได้แก่ จุดเริ่มต้น ($i = 1), เงื่อนไขในการทำงานต่อ ($i <= 5 ลูปจะทำงานต่อไปตราบเท่าที่เงื่อนไขนี้เป็นจริง) และขั้น ($i++ ซึ่งบวก 1 ให้ $i ในแต่ละรอบ)
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Round number {$i}<br>";
}ยังมีลูปอีกสองแบบที่เติมเต็มกล่องเครื่องมือ foreach วนผ่าน อาร์เรย์ (array) (รายการของค่า ซึ่งจะกล่าวถึงในบทถัดไป) แล้วส่งสมาชิกแต่ละตัวให้คุณทีละตัว while ทำบล็อกซ้ำ ตราบเท่าที่ เงื่อนไขยังคงเป็นจริง คุณเองต้องเป็นคนเปลี่ยนสถานการณ์ภายในลูปเพื่อให้มันหยุดในที่สุด
<?php
$fruits = ["apple", "pear", "kiwi"];
foreach ($fruits as $fruit) {
echo "Fruit: {$fruit}<br>";
}
$countdown = 3;
while ($countdown > 0) {
echo "{$countdown}...<br>";
$countdown--;
}
echo "Go!";else ทำงานเมื่อใด?match ต่างจาก if?while เป็นจริงตลอดไป?