Maison >développement back-end >tutoriel php >PHP如何将多维数组插入数据库
<code>php</code><code><?php $staff=array ( array("name"=>"洪七","number"=>"101","sex"=>"男","job"=>"总经理"), array("name"=>"郭靖","number"=>"102","sex"=>"男","job"=>"开发工程师"), array("name"=>"黄蓉","number"=>"103","sex"=>"女","job"=>"产品经理"), ); </code>
<code>php</code><code><?php $staff=array ( array("name"=>"洪七","number"=>"101","sex"=>"男","job"=>"总经理"), array("name"=>"郭靖","number"=>"102","sex"=>"男","job"=>"开发工程师"), array("name"=>"黄蓉","number"=>"103","sex"=>"女","job"=>"产品经理"), ); </code>
用 serialize
序列化数组,然后用unserialize
反序列化就可以了。
$myArray = array();
$myJson = json_encode($myArray);
$myJson是一个字符串,直接存数据库。
需要读取的时候
$myJson = ....;
$myArray = json_decode($myJson,true);
这样$myArray就是原来的数组。
http://php.net/manual/zh/function.serialize.php
http://php.net/manual/zh/function.json-encode.php
用序列化函数将数组序列化成字符串之后再存储到数据库中
补充上面的答案
如果是单个公司,新建一个staff表,然后把数据foreach进去,每行一个数字
如果是多个公司,新建一个staff表,然后把数据foreach进去,每行一个数字,并且加上公司id字段
这样后期增删查改也许容易点。
这里代码不能格式化么?多维数组 你确定不是数据库的设计有问题么?
serialize 的话如果只给php调用的话
json_encode 考虑多平台多语言
<code>/** * 将字符串转换为数组 * * @param string $data 字符串 * @return array 返回数组格式,如果,data为空,则返回空数组 */ function string2array($data) { if($data == '') return array(); @eval("\$array = $data;"); return $array; } /** * 将数组转换为字符串 * * @param array $data 数组 * @param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1 * @return string 返回字符串,如果,data为空,则返回空 */ function array2string($data, $isformdata = 1) { if($data == '') return ''; if($isformdata) $data = new_stripslashes($data); return addslashes(var_export($data, TRUE)); } </code>
phpcms里面用这种方法,请问和序列化比哪个更好?这是把数组变成字符串保存在数据库中,从数据库中读取就把字符串转换成数组。
"洪七","number"=>"101","sex"=>"男","job"=>"总经理"), array("name"=>"郭靖","number"=>"102","sex"=>"男","job"=>"开发工程师"), array("name"=>"黄蓉","number"=>"103","sex"=>"女","job"=>"产品经理"), ); ?>