ฟังก์ชั่น 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
kongtoonarmy says:
17/08/2552 at 17/08/2552
ขอบคุณครับ
สำหรับ เทคนิคดีๆ
fox says:
18/06/2557 at 18/06/2557
กำลังหาข้อมูลอยู่พอดีเลย
ขอบคุณมากครับ มีประโยชน์มาก :D