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