การทำงานกับแฟล็กใน PHP
ตอนนี้เราจะเรียนรู้วิธีการทำงานกับ แฟล็ก
แฟล็กคือตัวแปรพิเศษที่สามารถรับค่าได้เพียงสองค่าเท่านั้น: true
และ false ด้วยแฟล็ก เราสามารถแก้ปัญหา
ที่ตรวจสอบการขาดหายไปของบางสิ่ง:
ตัวอย่างเช่น เราสามารถตรวจสอบว่าในอาร์เรย์
ไม่มีองค์ประกอบที่มีค่าที่กำหนด ลองเริ่มต้นกันเลย
ลองแก้ปัญหาต่อไปนี้: ให้อาร์เรย์
ที่มีตัวเลข ต้องตรวจสอบว่ามีองค์ประกอบ
ที่มีค่า 3 หรือไม่ หาก
มี - แสดงผล '+++' หากไม่มี -
แสดงผล '---'
เริ่มแรก ลองแสดงผล '+++' กัน
ในการนี้ เราจะวนซ้ำทุกองค์ประกอบของอาร์เรย์ของเรา
และด้วย if เราจะถามว่า - องค์ประกอบปัจจุบัน
เท่ากับค่า 3 หรือไม่ หากเท่ากัน - แสดงผล
'+++':
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
}
}
?>
แต่คำตอบของเราไม่ดีนัก: เพราะหาก
ในอาร์เรย์มีค่า 3 ไม่ใช่แค่หนึ่งค่า
แต่มีหลายค่า '+++' จะถูกแสดงผลหลายครั้ง
ลองแก้ไขอาร์เรย์ของเรา (ทำให้มี
สององค์ประกอบที่มีค่า 3) และตรวจสอบดู:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // จะแสดงผลหลายครั้ง
}
}
?>
มาแก้ไขปัญหากัน: เราจะหยุดการทำงานของลูปด้วย
break หากพบองค์ประกอบแล้ว:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
break; // หยุดการทำงานของลูป
}
}
?>
ตอนนี้ลองทำให้ หากในอาร์เรย์ไม่มีองค์ประกอบที่มีค่า
3 เลย แสดงผล '---' ความเข้าใจผิดที่พบบ่อย
คือการเพิ่ม else ให้กับ
if ของเรา - ในกรณีนี้ '---' จะ
ถูกแสดงผลสำหรับทุกองค์ประกอบที่ไม่ใช่
3:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // แสดงผลบนองค์ประกอบ 3
} else {
echo '---'; // แสดงผลบนองค์ประกอบ 1, 2, 4, 5
}
}
?>
ดังนั้น แนวคิดที่จะเพิ่ม else - เป็นแนวคิดที่แย่
และใช้งานไม่ได้ สำหรับการแก้ปัญหาประเภทนี้
(ปัญหาประเภทนี้พบได้ค่อนข้างบ่อย) จึงใช้สิ่งที่เรียกว่าแฟล็ก
ดังที่ได้กล่าวไว้ข้างต้น แฟล็กคือตัวแปร
ที่สามารถรับได้เพียงสองค่า:
true หรือ false
ดังนั้น เรามาสร้างตัวแปร flag
ที่มีความหมายดังนี้: หากมันเท่ากับ true
แสดงว่าในอาร์เรย์มีองค์ประกอบ 3 และหาก
false แสดงว่าไม่มีองค์ประกอบดังกล่าว
เริ่มแรก กำหนดให้ตัวแปร flag
มีค่า false - นั่นคือเราจะถือว่า
ไม่มีองค์ประกอบ 3 ในอาร์เรย์:
$arr = [1, 2, 3, 4, 5];
$flag = false; // ถือว่าไม่มีองค์ประกอบ 3 ในอาร์เรย์
จากนั้น เราจะเริ่มการทำงานของลูปด้วย if อย่างที่เราเคยทำ
มาก่อน หากลูปพบว่าในอาร์เรย์
มีองค์ประกอบ 3 - เราจะกำหนดให้ตัวแปร flag
มีค่า true และออกจากลูป
ด้วย break:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false; // ถือว่าไม่มีองค์ประกอบ 3 ในอาร์เรย์
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true; // มีองค์ประกอบ - กำหนดค่าใหม่ให้ตัวแปร $flag
break; // ออกจากลูป
}
}
?>
คำตอบสำหรับคำถามที่ว่ามี 3 ในอาร์เรย์
หรือไม่ เราสามารถให้ได้หลังจากลูปเท่านั้น
และคำตอบนี้เรามีอยู่แล้ว: หลังจากลูป
ตัวแปร flag อาจยังคงเป็น false
หรืออาจเปลี่ยนค่าเป็น true,
หากลูปตรวจพบ 3 ในอาร์เรย์:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
// ตรงนี้ตัวแปร $flag เท่ากับ true หรือ false
?>
ตอนนี้หลังจากลูป เราสามารถสร้าง if ซึ่ง
จะตรวจดูตัวแปร flag และแสดงผล
บนหน้าจอ '+++' หรือ '---':
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
if ($flag === true) {
echo '+++';
} else {
echo '---';
}
?>
ให้อาร์เรย์:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
ตรวจสอบว่าในอาร์เรย์นี้มีองค์ประกอบ
'c' หรือไม่ หากมี - แสดงผล '+++',
และหากไม่มี - แสดงผล '---'
เขียนโค้ดที่จะตรวจสอบ ตัวเลขว่าเป็นจำนวนเฉพาะหรือไม่ จำนวนเฉพาะหารด้วยหนึ่ง และตัวมันเองเท่านั้น และไม่หารด้วยตัวเลขอื่นๆ