PHP 求教:二维数组serialize()存入数据库后怎么读出来?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 求教:二维数组serialize()存入数据库后怎么读出来?相关的知识,希望对你有一定的参考价值。
二维数组$arr 里有一个一维数组$pid,$pid有id ,name , num,存入数据库时$orderinfo=serialize($arr),表中orderinfo数据为a:2:s:6:"jsj001";a:3:s:3:"pid";s:6:"jsj001";s:4:"name";s:15:"计算机网络";s:3:"num";i:3;s:6:"jsj002";a: ,现在我用$arr=unserialize($infoa[orderinfo]) ,$t=$arr[$pid] ,从数据中读出是正常的,为什么无法输出$t[name],$t[num],$t[id] ? 求教,多谢...
参考技术A 可以试试json_encode()这个比序列化好用,如果不是特别需要的话可以json_encode() 再用json_decode()反编译成数组格式就没问题了追问谢谢回答!
参考技术B 汗 ! 不会在转回来啊 unserialize追问转了啊,我用$arr=unserialize($infoa[orderinfo]) ,$t=$arr[$pid] ,从数据中读出是正常的,为什么无法输出$t[name],$t[num],$t[id] ? 求教,多谢...
追答你的读取数据的页面中有$pid这个变量吗?有值没?
追问$pid是一个一维数组,里面有有id ,name , num三个属性,$arr=unserialize($infoa[orderinfo]) ,$t=$arr[$pid] ,然后echo $t 也是空的,数据库中的数据是正确的...
追答<?php$arr=array('id'=>array('a'=>'a','b'=>'b'),'name'=>'name');
var_dump($arr);
echo $new=serialize($arr);
$old=unserialize($new);
var_dump($old);
echo $arr['name'];
?>
这段代码完全没问题 你那个自己仔细检查下前后的代码吧
多谢你耐心的回答,现在我得到了 bool(false) array(1) ["jsj002"]=> array(3) ["pid"]=> string(6) "jsj002" ["name"]=> string(12) "编译原理" ["num"]=> int(2) 这样的结果,请问怎么把他还原回来呢?麻烦了
追答你这个是打印出来的数组吗?
本回答被提问者采纳PHP从二维数组获取指定数据,组成新维二数组
背景
有时候PHP接收前端传递过来的数据,若是一个二维数组且数组中有些数据并不需要存入数据库,因此需要对该二维数组进行过滤,获取指定数据,重新组成一个二维数组,然后存入数据库中
前端传递过来的原始二维数组
过滤后新的二维数组
实现代码
<?php
$arr = array(
0=>array(
'sex'=>'男',
'food'=>'rice',
'sport'=>'walk',
'name'=>'小明',
),
1=>array(
'sex'=>'女',
'food'=>'rice',
'sport'=>'walk',
'name'=>'小梅',
),
2=>array(
'sex'=>'男',
'food'=>'rice',
'sport'=>'ball',
'name'=>'小慧',
),
);
//获取键为sex跟name对应的值,其余数据过滤掉
$new_arr=[]; //过滤后的新数组
$tmp=[]; //临时数组,用来转移数据用的
foreach($arr as $k=>$v){
$tmp['sex']=$v['sex'];
$tmp['name']=$v['name'];
$new_arr[]=$tmp;
}
//打印输出
var_dump($new_arr);
?>
以上是关于PHP 求教:二维数组serialize()存入数据库后怎么读出来?的主要内容,如果未能解决你的问题,请参考以下文章