ฟังก์ชั่น serialize() เป็นฟังก์ชั่นที่ใช้สำหรับแพ็ก อะเรย์หรืออ้อบเจ็ก ให้อยู่ในรูปของสตริง โดยเมื่อเราใช้ฟังก์ชั่น unserialize() มันออกมา ข้อมูลจะกลับมาอยู่ในรูปเดิมอย่างไม่เสียคุณสมบัิิติ ถ้าเรา serialize() อะเรย์ เมื่อ unserialize() ก็จะได้อะเรย์คืนมา

วิธีการใช้งาน:

$animals = array('dog','cat','cow');
$string = serialize( $animals ); // จะได้สตริง
$animals = unserialize( $string ); // จะได้อะเรย์เหมือนบรรทัดแรก

ทีนี้เราจะนำมันไปใช้ประโยชน์อะไรได้บ้างล่ะ ฟังก์ชั่นนี้ ผมขอยกตัวอย่างนะครับ สมมุติว่าเรามีตัวเลือกซึ่งดึงมาจากฐานข้อมูลสร้างเป็นเช็กบ้อก ให้ยูสเซอร์ติ๊กเลือก ซึ่งยูสเซอร์อาจจะเลือกเพียงหนึ่งตัวหรือมากกว่า และในอนาคตก็ยังไม่แน่ว่าตัวเลือกที่ดึงจากฐานข้อมูลอาจจะเพิ่มจาก 5 เป็น 10 หรือมากกว่านั้น เรียกได้ว่า เราไม่รู้แน่นอนเลยว่าตัวเลือก จะมีสักกี่ตัวกันแน่

ทีนี้เวลาเราจะสร้างฐานข้อมูลเพื่อเก็บตัวเลือกที่ยูสเซอร์แต่ละคนติ๊กเลือกไป ซึ่งก็ไม่แน่นอนอีกว่าเขาเลือกกี่ตัว เราจะสร้างฟิลด์กี่ฟิลด์ ดี

เหตุการณ์อย่างนี้แหละครับที่ serialize() เข้ามาช่วยงานเราได้ โดยเราแค่สร้างฐานข้อมูลเก็บตัวเลือกที่ยูสเซ่อร์เลือก มีเพียงฟิลด์เดียวก็พอ แล้วเรา

//<input type="checkbox" name="checkbox[]" value="from-db">
$user_selected = serialize( $_POST['checkbox'] );

เอา $user_selected เก็บลงฟิลด์ที่เตรียมไว้ เวลาจะตรวจเช็กว่ายูสเซอร์เลือกตัวไหนไว้บ้าง ก็แค่ unserialize() ออกมา เท่านั้นเอง

ลองอ่านบทความของเพื่อนอินเตอร์เน็ตท่านหนึ่งดู เผื่อได้แนวคิดเพิ่มเติม

http://profile.un-no.com/Synchronize/entry/serialize-unserialize.un