แปลง data array เป็นตัวหนังสือธรรมดา

แปลง data array เป็นตัวหนังสือธรรมดา

หากว่าเราเก็บข้อมูลจากหลายอย่างของ user เอาไว้ เช่น user เลือกซื้อของอะไร จำนวนกี่ชิ้น สีอะไร เราก็อาจจะใช้ array เข้ามาช่วยในการเก็บ แล้วถ้าเราต้องการส่งค่าข้ามไปอีกหน้าล่ะ จะทำอย่างไร คำตอบก็คือ เขียนใส่ cookie, session ตามแต่สะดวก

ถ้าตัวอย่างเรามีข้อมูลดังนี้ 

$shop = array(
 '1' => array('type'=>'n1', 'color' => 'red', 'quantity' => '3'),
 '2' => array('type' =>'n2', 'color' => 'blue', 'quantity' => '4')
);

 

เป็น array 2 มิติ แบบนี้ เรา แล้วจะเก็บอย่างไรให้ง่าย และไม่งง หลายคนคงบอกว่า ก็เก็บ cookie แบบ array ไง แล้ว วน loop เขียน และ วน loop อ่านขึ้นมา หรือกระทั่ง session ก็ตาม loop เขียนลงไปตามชื่อตัวแปรที่เราสร้างขึ้นมา 10 ชนิด ก็ได้ cookie 10 ชุดเลย อีกทั้ง เราจะรู้ได้อย่างไรว่า type ของ ตัวแปรที่เก็บลงไป แล้วอ่านขึ้นมา จะยังคงเหมือนเดิม เพราะว่าถ้า วน loop ตามปกติ เราก็ต้องคอยมาดักว่าเป็น quantity หรือเปล่า ถ้าใช่ก็กำหนดให้เป็น int คงเสียเวลามากเลย

แต่จะง่ายกว่ามั้ย หากว่าเราเปลี่ยนมาใช้วิธีง่าย แค่ function เดียว เก็บค่า และยังอ่านออกมาได้โดยคงสภาพข้อมูลที่เหมือนเดิม

นั่นคือ serialize()

วิธีการใช้ก็ง่ายมาก

$shop = serialize($shop);

เสร็จแล้ว แล้วเราก็เอา $shop ไปเก็บใน cookie หรือ session ได้เลย แค่นี้เองครับ เพราะว่าหลังจากที่ผ่านการ serialize มาแล้ว เราจะได้เพียง plain text หรือตัวหนังสือธรรมดา 1 ชุดเท่านั้นเอง

และเมื่อเราจะอ่านค่าและแปลงกลับมาใช้อีกครั้งหนึ่ง เราก็แค่ใช้

$shop = unserialize($shop);

เท่าที่ $shop เราก็จะกลับมามีหน้าตาเหมือนเดิมเปี้ยบเลย

แต่ทั้งนี้อาจจะต้องระวังการเอาไปเก็บใน cookie เพราะว่าการเก็บเป็น plain text แบบนี้จะทำให้ สามารถ แก้ไขได้ง่ายมาก อีกทั้งหลังจากการ serialize แล้วจะทำให้มี header ที่มากขึ้นด้วย แนะนำให้เก็บเป็น session หรือ database จะดีกว่าครับ

Create: Modify : 2011-02-13 21:19:38 Read : 5335 URL :