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从二维数组获取指定数据,组成新维二数组


过滤后新的二维数组


实现代码

<?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);

?>


END

以上是关于PHP 求教:二维数组serialize()存入数据库后怎么读出来?的主要内容,如果未能解决你的问题,请参考以下文章

指针问题求教

求教一个JQ 遍历 生成多维数组的问题

PHP将数组存入数据库中的四种方式

PHP从二维数组获取指定数据,组成新维二数组

求教:Java遍历对象二维数组抛出NullPointerException异常

php 序列化 serialize