การใช้งานแอเรย์ (Array) ของ PHP (ตอนที่ 4)
ผมได้เสนอเทคนิคการใช้งานแอเรย์มา 3 ตอนแล้ว ในตอนนี้ผมจะนำเสนอคำถามจากบอร์ดถึงการแทนที่ข้อความที่กำหนดด้วยข้อความอื่นโดยใช้แอเรย์
ผมยกตัวอย่างโจทย์ง่ายๆเช่นการแสดงสถานะสมาชิก เช่น การแบ่งสมาชิกออกเป็น 3 ระดับ
สถานะ 0 คือ สมาชิกทั่วไป
สถานะ 1 คือ ผู้ช่วยแอดมิน
สถานะ 2 คือ แอดมิน
โจทย์แบบนี้หลายๆคนคงคิดถึงการใช้ if นะครับ
ข้อเสียของการใช้ if (รวมถึง switch case) คือถ้าตัวเลือกยิ่งหลายระดับ จำนวนบรรทัดก็ยิ่งมาก เราจะมาลองใช้แอเรย์แทนการใช้ if ดูนะครับ
โดยปกติ เมื่อเราอ่านข้อมูลจากฐานข้อมูล เราจะเก็บข้อมูลสถานะ เป็นตัวเลข คือ 0, 1 หรือ 2 (การเก็บข้อมูลแบบนี้มีประโยชน์ในภายหลังหลายอย่าง เช่น เราอาจกำหนดให้สถานะตัวเลขสูงสุดมีความสำคัญสูงสุดได้ง่ายๆ หรือ การเปลี่ยนแปลงข้อความของสถานะทำได้ง่ายๆ เนื่องจากมันเป็นคนละรายการกับตัวเลข) เวลาแสดงผลก็ใช้แบบนี้เลยครับ
ในตอนแรกๆ เราอาจไม่ค่อยเข้าใจเทคนิคง่ายๆ แบบนี้นะครับ แต่ขอให้พยายามเทียบเคียงดูจะพบว่าบางครั้งเราอาจแทบไม่ต้องใช้ if หรือ case ที่ยาวๆเลย และยังสามารถแก้ไขได้ง่ายอีกด้วย
นอกจากนี้เรายังสามารถสลับข้อมูลที่จัดเก็บในแอเรย์ได้ โดยไม่มีผลกระทบต่อการนำไปใช้งาน ยกตัวอย่างเช่น
ประโยชน์ที่ใช้บ่อยๆก็เช่น ต้องการเรียงลำดับการแสดงผลสถานะสมาชิกในตอนแสดงผล (ตัวอย่างเช่นการใส่ลงใน select เรียงลำดับตามตัวอักษร) โดยที่ค่ายังเหมือนเดิม
มี 4 ตอนนะครับ อ่านต่อตอนอืนๆที่ลิงค์ด้านล่าง
ผมยกตัวอย่างโจทย์ง่ายๆเช่นการแสดงสถานะสมาชิก เช่น การแบ่งสมาชิกออกเป็น 3 ระดับ
สถานะ 0 คือ สมาชิกทั่วไป
สถานะ 1 คือ ผู้ช่วยแอดมิน
สถานะ 2 คือ แอดมิน
โจทย์แบบนี้หลายๆคนคงคิดถึงการใช้ if นะครับ
<?php
if ($memberstatus == 2) {
echo 'สถานะของสมาชิกท่านนี้ คือ แอดมิน';
} elseif ($memberstatus == 1) {
echo 'สถานะของสมาชิกท่านนี้ คือ ผู้ช่วยแอดมิน';
} else {
echo 'สถานะของสมาชิกท่านนี้ คือ สมาชิกทั่วไป';
}
?>
ข้อเสียของการใช้ if (รวมถึง switch case) คือถ้าตัวเลือกยิ่งหลายระดับ จำนวนบรรทัดก็ยิ่งมาก เราจะมาลองใช้แอเรย์แทนการใช้ if ดูนะครับ
โดยปกติ เมื่อเราอ่านข้อมูลจากฐานข้อมูล เราจะเก็บข้อมูลสถานะ เป็นตัวเลข คือ 0, 1 หรือ 2 (การเก็บข้อมูลแบบนี้มีประโยชน์ในภายหลังหลายอย่าง เช่น เราอาจกำหนดให้สถานะตัวเลขสูงสุดมีความสำคัญสูงสุดได้ง่ายๆ หรือ การเปลี่ยนแปลงข้อความของสถานะทำได้ง่ายๆ เนื่องจากมันเป็นคนละรายการกับตัวเลข) เวลาแสดงผลก็ใช้แบบนี้เลยครับ
<?php
// ใช้แอเรย์เก็บข้อมูล หากต้องการเปลี่ยนแปลงชนิดของของมูลก็แก้ไขที่ข้อมูลของแอเรย์เท่านั้น
$status = array(0 => 'สมาชิกทั่วไป', 1 => 'ผู้ช่วยแอดมิน', 2 => 'แอดมิน');
// สถานะอาจอ่านมาจากฐานข้อมูลก็ได้
$memberstatus = 1;
// แสดงผล
echo "สถานะของสมาชิกท่านนี้ คือ ".$status[$memberstatus];
?>
ในตอนแรกๆ เราอาจไม่ค่อยเข้าใจเทคนิคง่ายๆ แบบนี้นะครับ แต่ขอให้พยายามเทียบเคียงดูจะพบว่าบางครั้งเราอาจแทบไม่ต้องใช้ if หรือ case ที่ยาวๆเลย และยังสามารถแก้ไขได้ง่ายอีกด้วย
นอกจากนี้เรายังสามารถสลับข้อมูลที่จัดเก็บในแอเรย์ได้ โดยไม่มีผลกระทบต่อการนำไปใช้งาน ยกตัวอย่างเช่น
$status = array(2 => 'แอดมิน', 1 => 'ผู้ช่วยแอดมิน', 0 => 'สมาชิกทั่วไป');
ประโยชน์ที่ใช้บ่อยๆก็เช่น ต้องการเรียงลำดับการแสดงผลสถานะสมาชิกในตอนแสดงผล (ตัวอย่างเช่นการใส่ลงใน select เรียงลำดับตามตัวอักษร) โดยที่ค่ายังเหมือนเดิม
มี 4 ตอนนะครับ อ่านต่อตอนอืนๆที่ลิงค์ด้านล่าง