GORAGOD.com

เรื่องของ แอเรย์

มีหลายๆกรณีครับที่เราสามารถนำเอาความยืดหยุ่นของ Array มาใช้ให้เกิดประโยชน์ได้

ปกติเวลาเรานึกถึง Array เรามักจะนึกถึงแอเรย์ในรูปแบบนี้
<?
  $array[0]=1;
  $array[1]=2;
?>

ทีนี้การอ้างถึง ชื่อหรือค่าของ Array ก็ทำได้ไม่ยาก คือ

<?
  for ($i=0; $i<count($array); $i++) {
    echo "แอเรย์ชื่อ $i มีค่า $array[$i]<br />";
  }
?>

ทีนี้ถ้าเป็น Array รูปแบบนี้บ้างละ การอ้างถึงชื่อ และค่าของแอเรย์จะทำอย่างไร

<?
  $array[one]=1;
  $array[two]=2;
  $array[three]=3;
  $array[four]=4;
?>

เฉลย

<?
foreach($array as $name => $val) {
  echo "แอเรย์ชื่อ $name มีค่า $val<br />";
}
?>

แอเรย์แบบนี้มีประโยชน์อย่างไร ?
ง่ายๆเลย ก็การตรวจสอบค่าซ้ำกันไงครับ เช่น

<?
  $color[red]=1;
  $color[blue]=1;
  $color[red]=1;
  foreach($color as $name => $val) {
     if (!$ret[$name]) { //ถ้าซ้ำเดิมไม่ต้องแสดงอีก
       $ret[$name]=$val;
       echo "ค่าสี $name<br />";
     }
  }
?>

ผลลัพท์
ค่าสี red
ค่าสี blue


หรือการรวมสินค้าในตระกร้าสินค้าไงครับ ถ้ามีสินค้ารายการเดิมซ้ำมาก็ให้เพิ่มจำนวนขึ้นอีก 1
<?
  $array=array("1", "1", "4", "2", "1","1", "3", "4", "3", "2" );
  $data=array();
  for ($i=0; $i<count($array); $i++) {
    $data[$array[$i]]++;
  }
  print_r($data); //แสดงว่าค่าอะไรมีกี่จำนวน
?>

ผลลัพท์
Array ( [1] => 4 [4] => 2 [2] => 2 [3] => 2 )