GORAGOD.com

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

ในตอนแรกๆ เราอาจไม่ค่อยเข้าใจเทคนิคง่ายๆ แบบนี้นะครับ แต่ขอให้พยายามเทียบเคียงดูจะพบว่าบางครั้งเราอาจแทบไม่ต้องใช้ if หรือ case ที่ยาวๆเลย และยังสามารถแก้ไขได้ง่ายอีกด้วย
นอกจากนี้เรายังสามารถสลับข้อมูลที่จัดเก็บในแอเรย์ได้ โดยไม่มีผลกระทบต่อการนำไปใช้งาน ยกตัวอย่างเช่น
$status = array(2 => 'แอดมิน', 1 => 'ผู้ช่วยแอดมิน', 0 => 'สมาชิกทั่วไป');

ประโยชน์ที่ใช้บ่อยๆก็เช่น ต้องการเรียงลำดับการแสดงผลสถานะสมาชิกในตอนแสดงผล (ตัวอย่างเช่นการใส่ลงใน select เรียงลำดับตามตัวอักษร) โดยที่ค่ายังเหมือนเดิม

มี 4 ตอนนะครับ อ่านต่อตอนอืนๆที่ลิงค์ด้านล่าง