การใช้งานแอเรย์ (Array) ของ PHP (ตอนที่ 4)

ผมได้เสนอเทคนิคการใช้งานแอเรย์มา 3 ตอนแล้ว ในตอนนี้ผมจะนำเสนอคำถามจากบอร์ดถึงการแทนที่ข้อความที่กำหนดด้วยข้อความอื่นโดยใช้แอเรย์

ผมยกตัวอย่างโจทย์ง่ายๆเช่นการแสดงสถานะสมาชิก เช่น การแบ่งสมาชิกออกเป็น 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('สมาชิกทั่วไป', 'ผู้ช่วยแอดมิน', 'แอดมิน');
  // สถานะอาจอ่านมาจากฐานข้อมูลก็ได้
  $memberstatus = 1;
  // แสดงผล
  echo "สถานะของสมาชิกท่านนี้ คือ ".$status[$memberstatus];
?>

ในตอนแรกๆ เราอาจไม่ค่อยเข้าใจเทคนิคง่ายๆ แบบนี้นะครับ แต่ขอให้พยายามเทียบเคียงดูจะพบว่าบางครั้งเราอาจแทบไม่ต้องใช้ if หรือ case ที่ยาวๆเลย และยังสามารถแก้ไขได้ง่ายอีกด้วย

เรื่องที่เกี่ยวข้อง

^