在
PHP开发中,最常用的数据类型算是字符串和数组了,且数组类型的数据通常需要和数据库进行交互,尤其是对于结构化的数据。
在很多时候,我们需要把数字保存到数据库,实现对于结构化数据的直接存储以及读取。
有一个经典用法就是,表单中的复选框checkbox叫多项数据提交给PHP后端,那PHP接收到的就是一个数组,且在很多情况下,有可能还是一个多维数组。例如求职信息中的期望就职的行业是多选的,每个行业中的职位也是多选的,那提交上来的数据是这样的:
[PHP]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
$job
=
array
(
array
(
"name"
=>
"IT服务/系统集成"
,
"subcate"
=>
array
(
"产品经理专员"
,
"网站策划"
,
"网站运营"
),
),
array
(
"name"
=>
"互联网电子商务"
,
"subcate"
=>
array
(
"软件工程师"
,
"测试工程师"
)
),
);
|
对于这样的数据,
MySQL数据库是没有办法直接写入的,那么我们首先考虑到的就是将数据拆分处理,可是这项工作既繁杂,又很容易出错,很难对应,所以,我们需要另辟蹊径,将数据进行转换,操作起来简单。
1.使用PHP提供的序列化函数serialize()
[PHP]
纯文本查看
复制代码
1
|
$job_serialize
= serialize(
$job
);
// 序列化成字符串
|
接下来就是将这个字符串存入数据库即可,当我们将数据读取出来时,再将这个字符串进行反序列为数组即可
[PHP]
纯文本查看
复制代码
1
|
$job_restore
= unserialize(
$job_serialize
);
// 反序列化为数组
|
2.使用PHP提供的函数
json_encode()
[PHP]
纯文本查看
复制代码
1
|
$job_json
= json_encode(
$job
);
// 将数组转换为json格式的字符串
|
接下来就是将这个字符串存入数据库即可,当我们将数据读取出来时,再将这个字符串进行转换为数组即可
[PHP]
纯文本查看
复制代码
1
|
$job_dejson
= json_decode(
$job_json
,true);
// 将json字符串转换为数组
|