做微信开发,鉴于微信POST的消息是XML数据包,通过SimpleXMLElement Object获取的数据不好操作,需要转化为普通数组。

网上找了很多方法都不理想,发现通过json_decode和json_encode可以转化,遂分享给大家。

$postStr = '<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>';
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $jsonStr = json_encode($postObj);
$jsonArray = json_decode($jsonStr,true); print_r($jsonArray);

输出结果为:

Array
(
[ToUserName] => toUser
[FromUserName] => fromUser
[CreateTime] => 1348831860
[MsgType] => text
[Content] => this is a test
[MsgId] => 1234567890123456
)

这样操作起来就容易多了。

php中将SimpleXMLElement Object数组转化为普通数组的更多相关文章

  1. PHP开发小技巧③—实现多维数组转化为一维数组

    在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常 ...

  2. js快速将字符串数组转化为数字数组(互换)

    1.数字数组转化为字符串数组 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); //结果: ['1', '2', '3', '4', '5 ...

  3. 二维数组转化为一维数组 contact 与apply 的结合

    将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性实现更为简洁优雅的转换.本文将从朴素的循环转换开始,逐一介绍三 ...

  4. 在Javascript中什么是伪数组?如何将伪数组转化为标准数组?

    答案: 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们.典型的是函数的argument参数,还有像调用getElementsByTa ...

  5. 在javascript中什么是伪数组,如何将伪数组转化为标准数组?

    这里把符合以下条件的对象称为伪数组: 1.具有length属性 2.按索引方式存储数据 3.不具有数组的push.pop等方法 伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的 ...

  6. 题目要求:传入数组 内容为[['lisi','男','27'],['wangwu','男',18],['zhaoliu','男','30']],将此二维数组转化为一维数组,创建自定义函数完成

    //自定义函数 function getOne($arr){ $str = ''; //定义空的字符串,用来接收值 foreach ($arr as $key=>$value){ //循环遍历数 ...

  7. js字符数组转化为数字数组

    先谈一谈需求,我有一个字符串数组,数组内容是字符类型的数字,需要把字符类型的数字转换为数字类型,找了找资料,发现牛人真是多,把前辈的经验总结一下. 例子 ['1','2','3'] => [1, ...

  8. js 快速将字符串数组 转化为 数字数组(互换)

    转载于   这里 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); //结果: ['1', '2', '3', '4', '5', '6' ...

  9. js关于数组的操作(合并数组、添加数组、循环等)

    1. concat() 方法 concat() 方法用于连接两个或多个数组 var arr = new Array(3) arr[0] = "George" arr[1] = &q ...

随机推荐

  1. mybatis插入值的时候返回对象的主键值

    mapping文件: <insert id="insert" parameterType="com.vimtech.bms.business.riskproject ...

  2. C++类中引用成员和常量成员的初始化(初始化列表)

    如果一个类是这样定义的: Class A { public: A(int pram1, int pram2, int pram3); privite: int a; int &b; const ...

  3. WCF发布方式介绍

    转载出处:http://blog.csdn.net/fangxing80/article/details/6101790 从VS2005推出WCF以来,WCF逐步取代了Remoting, WebSer ...

  4. js的变量的有效域

    function test(o) { var i=0; if(typeof o=="object") { var j=1; for(var k=0;k<10;k++) { c ...

  5. ModelMap和ModelAndView区别

    首先介绍ModelMap和ModelAndView的作用 ModelMap ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可 ...

  6. OSSIM 4 组件目录

    在查找openvas问题的时候,发现: 主要组件的配置文件目录:/etc/default主要组件的安装目录:/usr/share 感觉和kali linux的的结构类似.

  7. tomcat中reloadable作用

    reloadable作用 reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监 ...

  8. flutter演示项目:游侠客户端

    使用flutter实现的游侠客户端. 还有一些页面没写,最主要的问题是无法解析html富文本. https://github.com/axel10/flutter_ali213_client_demo

  9. easyui中导航菜单accordion与tree的动态添加

    博客分类: Java Web开发   Js代码   $.parser.parse(); $.ajax({ url:my.bp()+'/main/menuaction!createMenu.action ...

  10. EASYUI datagrid批量修改与提交

    http://www.cnblogs.com/szytwo/archive/2012/08/29/2662169.html 前台主要代码: <script type="text/jav ...