数组是 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()函数转换成数组就可以了。
效率上来说,使用 JSON 方法会快1.3~1.4倍。所以一般用json_encode()和json_decode()函数转换!
本文探讨了如何在PHP中处理复杂数组数据,并将其有效存储于MySQL数据库的方法。通过使用serialize()和json_encode()函数,可以将数组转换为字符串,便于数据库存储。读取时再利用unserialize()和json_decode()进行反序列化,恢复数组结构。
2408

被折叠的 条评论
为什么被折叠?



