A-AA+then

ลองมาดูเทคนิคการใช้งานแอเรย์ในการช่วยสรุปข้อมูล เพื่อหลีกเลี่ยงการคิวรี่ข้อมูลที่ซับซ้อนกันอีกรูปแบบหนึ่ง โดยใช้ข้อมูลเดิมในบทก่อนเลยครับ

ห้อง 102 เข้าพักวันที่ 10
ห้อง 103 เข้าพักวันที่ 10
ห้อง 102 เข้าพักวันที่ 11
ห้อง 101 เข้าพักวันที่ 11
ห้อง 103 เข้าพักวันที่ 12
ห้อง 102 เข้าพักวันที่ 12
ห้อง 102 เข้าพักวันที่ 12


จากข้อมูลด้านบนเราจะมาทำการสรุปข้อมูลเพื่อแสดงรายงานว่า ในแต่ละวันมีคนเข้าพักกี่ห้องและห้องใดบ้าง คุณสามารถลองเขียนคำสั่ง SQL เพื่อลองสรุปข้อมูลที่ต้องการดูได้นะครับ
<?php

  // สมมุติข้อมูลจาก database (ประมาณนี้)

  $result = array();

  $result[] = array('room' => 101, 'date' => 10);

  $result[] = array('room' => 102, 'date' => 10);

  $result[] = array('room' => 103, 'date' => 10);

  $result[] = array('room' => 102, 'date' => 11);

  $result[] = array('room' => 101, 'date' => 11);

  $result[] = array('room' => 103, 'date' => 12);

  $result[] = array('room' => 102, 'date' => 12);

?>
ข้อมูลที่ query ออกมาจาก database จะมีรูปแบบตามข้อมูลด้านบน ซึ่งก็เหมือนกับตัวอย่างก่อน
<?php
  // วนลูปเพื่อสรุปข้อมูลว่าในวันที่ต่างๆ มีผู้เข้าพักกี่ห้อง ห้องใดบ้าง

  $datas = array();

  foreach ($result AS $items) {
   // นับจำนวนผู้เข้าพักในวันที่ $items['date']

    $datas[$items['date']]['count']++;

   // แอเรย์เก็บชื่อห้องพักในวันที่ $item['date']
    $datas[$items['date']]['rooms'][] = $items['room'];

  }
  // สำหรับดูโครงสร้างของข้อมูล
  print_r($datas);
  // แสดงผลลัพท์

  foreach ($datas AS $date => $items) {

    echo "<p>วันที่ $date มีผู้เข้าพัก $items[count] ห้อง (".implode(',', $items['rooms']).")</p>";

  }

?>

จากตัวอย่างเราจะใช้เทคนิคแอเรย์หลายมิติในการจัดการกับข้อมูล $datas[วันที่]['count'] สำหรับเก็บจำนวนห้องพักทั้งหมด และ $datas[วันที่]['rooms'] สำหรับเก็บหมายเลขห้อง ซึ่งเป็นแบบแอเรย์

implode ใช้สำหรับการรวมแอเรย์เป็น string ครับ

Relate

^