數組是 PHP 開發中使用最多的數據類型之一,對于結構化的數據尤為重要。
很多時候我們需要把數組保存到數據庫中,實現對結構化數據的直接存儲和讀取。
其中一個案例就是,對于 Form 提交的多選 checkbox 數據,PHP后端就收到的數據就是一個數組,而且有可能還是多維數組。例如,如下一個員工數組:
$staff = array ( array("name" => "洪七", "number" => "101", "sex" => "男", "job" => "總經理", "mobile" => array("01234567890", "9876543210")), array("name" => "郭靖", "number" => "102", "sex" => "男", "job" => "開發工程師"), array("name" => "黃蓉", "number" => "103", "sex" => "女", "job" => "產品經理"), );
對于這樣的數據,MySQL數據庫是無法直接寫入的,那么有什么辦法呢?
有,但是需要稍微轉換一下,不過也很簡單。就是使用PHP自帶的serialize()或者json_encode()函數序列化數據成字符串:
// 寫入數據庫之前 $staff_serialize = serialize($staff); // 序列化成字符串 $staff_json = json_encode($staff); // JSON編碼數組成字符串
// 讀取數據庫后 $staff_restore = unserialize($staff_serialize); // 反序列化成數組 $staff_dejson = json_decode($staff_json, true); // JSON解碼成數組
之后從數據庫里面讀出來的數據還是字符串格式的,用unserialize()和json_decode()函數轉換成數組就可以了。