Discuz 反序列化数组讲解

原创 2018年04月15日 16:40:45
先来实例解释一下PHP中的序列化数组

[代码]php代码:

1<?php 
2    $arr array('张三','李四');  //定义数组
3    $str = serialize($arr);  //这里是序列化$arr
4    echo $str."<br/><br/>"
5    $new_arr = unserialize($str);  //这里是反序列化$str
6    print_r($new_arr);
7?>
序列化对应的函数为 serialize(), 反序列化对应的函数为:unserialize() 。
可以将前者序列化之后的数据存到数据库的某个字段中,使用时再通过反序列化处理。

那么,在discuz中,我们通过一个实例来了解如何反序列化处理
        以分类信息中上传图片字段为例。这个字段是采用先把内容包装到一个数组(内容包含图片的存储路径和这个图片的id),然后序列化保存在value字段中。如果我们只需要其中的图片路径。那么就需要对存入到value字段中的序列化数组进行反序列化。当然,这里需要注意的一个问题,如图:

在这里我们需要注意一个符号。反斜杠“\”。(猜测是因为编辑内容后生成的)。所以,在这里我们就需要多一道工序。
首先是查询数据库,这里忽略.....(所用的表是:pre_forum_typeoptionvar
查询完,首先需要去掉反斜杠才能对数组反序列化处理。直接反序列化数组值是空。
第一步去掉反斜杠

[代码]php代码:

1<!--{eval $value_1 stripcslashes($value)}-->
第二步反序列化数组

[代码]php代码:

1<!--{eval $value_2 = unserialize($value_1)}-->

[代码]php代码:

1这样,我们就得出了我们想要的数组:$value_2。打印出来后的结果为
当然 在这里我们不能直接使用$value_2,因为它还是一个数组,不能直接使用。如果我们需要上图中的图片路径,则直接使用$value_2[url]即可。

序列化——反序列化(数组)

序列化——反序列化(数组)
  • zjs261019
  • zjs261019
  • 2016-11-01 13:23:24
  • 879

vb.net 数组的反序列化不支持类型 json

json结构如下: "[ { ""id"":1, ""globalID"":1, ""time"":""2018-01-26T17:20:51.2512497+08:00"", ""type"":"...
  • ngamgolden
  • ngamgolden
  • 2018-01-27 14:38:43
  • 98

Newtonsoft.Json 反序列化JSON数组

1:下载引用Newtonsoft.Json.dll string json = "[{ID:'1',Name:'John',Other:[{Age:'21',Sex:'0'}]},{ID:'2',Na...
  • zx_001
  • zx_001
  • 2017-11-27 17:19:03
  • 433

json多层数组的反序列化

继上篇《json数组的反序列化》 引言        已经爱上了json,无法自拔,周末的时候搞一些小研究自然是一件美美哒事情,已迫不及待献上我的研究成果。        在前几篇中,我们的...
  • u013037201
  • u013037201
  • 2016-05-21 11:31:18
  • 4100

json数组的反序列化

继上篇《json的反序列化》 引言          上篇提到了最基本的json对象反序列化,在项目中遇到了这么一个问题。接收到的是一个json数组。该怎么序列化呢?           先校...
  • u013037201
  • u013037201
  • 2016-05-21 09:04:01
  • 2698

discuz学习记录:在模板文件中循环显示数组中的值

修改 http://blog.csdn.net/bq_cui/article/details/53395461 中的文件。 /source/module/gycp/gycp_publish.php ...
  • bq_cui
  • bq_cui
  • 2016-11-29 22:19:01
  • 716

数组对象的反序列化解析

在前几篇使用mina实现rpc调用时,会存在方法中要求返回类型是数组的情况,如定义一个方法,public Properties[] getProps();但是当Method.invoke()方法执行完...
  • stevexk
  • stevexk
  • 2008-08-07 16:28:00
  • 3562

javascript 数组Json序列化与反序列化

前台 javascript,对一个数组 进行序列化 然后后台进行反序列化得到一个数组(List)...
  • festone000
  • festone000
  • 2014-10-30 11:41:58
  • 1609

利用fastjson反序列化json为对象和对象数组

利用fastjson 将 .json文件 反序列化为 java.class 和 java.util.List
  • muyu709287760
  • muyu709287760
  • 2015-08-28 20:59:11
  • 5069

用XmlSerializer串行化(序列化)ArrayList数组对象与反序列化

刚才把经过xml串行化(序列化)的数组对象,输入进了数据库,然后再读取出来,反序列化为一个数组对象。成功了!!整个过程只用了这么点代码,真是一气呵成的感觉。学会了这一手技术,以后做对象的数据转移的时候...
  • hanpoyangtitan
  • hanpoyangtitan
  • 2006-11-28 09:41:00
  • 2393
收藏助手
不良信息举报
您举报文章:Discuz 反序列化数组讲解
举报原因:
原因补充:

(最多只允许输入30个字)