php中将SimpleXMLElement Object数组转化为普通数组

在PHP中可以用simplexml_load_file或者simplexml_load_string 方便地进行XML的分析,但是这两个方法返回的都是 SimpleXMLElement 用起来还是很不方便。

在支付宝接口demo里有这样的写法:

/**

* 通过节点路径返回字符串的某个节点值

* $res_data——XML 格式字符串

* 返回节点参数

*/

function getDataForXML($res_data,$node)

{

$xml = simplexml_load_string($res_data);

$result = $xml->xpath($node);

while(list( , $node) = each($result))

{

return $node;

}

}

总是觉得不怎么灵活,如果我想去所有的节点数据感觉操作一点都不方便。

其实php提供了更简单的方法,直接把 $xml 对象转换为数据就可以了

$xml = (array)$xml;

看代码 哈哈:

$_POST['notify_data'] = '150个xxxxxstefan321@qq.com2012-02-27 15:26:28trade_status_sync1xxxx2012-02-27 15:27:15xxxxTRADE_FINISHEDN0.012012-02-27 15:27:15xxxxx@gmail.com2012-02-27 15:27:140.01xxxxxxxxxxN';

$xml = simplexml_load_string($_POST['notify_data']);

$notify['payment_type'] = $xml->xpath('/notify/payment_type');

$notify['subject'] = $xml->xpath('/notify/subject');

$notify['trade_no'] = $xml->xpath('/notify/trade_no');

$notify['buyer_email'] = $xml->xpath('/notify/buyer_email');

$notify['gmt_create'] = $xml->xpath('/notify/gmt_create');

$notify['notify_type'] = $xml->xpath('/notify/notify_type');

$notify['out_trade_no'] = $xml->xpath('/notify/out_trade_no');

$notify['notify_time'] = $xml->xpath('/notify/notify_time');

$notify['seller_id'] = $xml->xpath('/notify/seller_id');

$notify['trade_status'] = $xml->xpath('/notify/trade_status');

$notify['total_fee'] = $xml->xpath('/notify/total_fee');

$notify['seller_email'] = $xml->xpath('/notify/seller_email');

$notify['price'] = $xml->xpath('/notify/price');

$notify['buyer_id'] = $xml->xpath('/notify/buyer_id');

$notify['notify_id'] = $xml->xpath('/notify/notify_id');

print_r($notify);

$xml = (array)$xml;

print_r($xml);

输出:

Array

(

[payment_type] => Array

(

[0] => SimpleXMLElement Object

(

[0] => 1

)

)

[subject] => Array

(

[0] => SimpleXMLElement Object

(

[0] => 50个xx

)

)

[trade_no] => Array

(

[0] => SimpleXMLElement Object

(

[0] => xxx

)

)

[buyer_email] => Array

(

[0] => SimpleXMLElement Object

(

[0] => stefan321@qq.com

)

)

[gmt_create] => Array

(

[0] => SimpleXMLElement Object

(

[0] => 2012-02-27 15:26:28

)

)

[notify_type] => Array

(

[0] => SimpleXMLElement Object

(

[0] => trade_status_sync

)

)

[out_trade_no] => Array

(

[0] => SimpleXMLElement Object

(

[0] => xxxx

)

)

[notify_time] => Array

(

[0] => SimpleXMLElement Object

(

[0] => 2012-02-27 15:27:15

)

)

[seller_id] => Array

(

[0] => SimpleXMLElement Object

(

[0] => xxxx

)

)

[trade_status] => Array

(

[0] => SimpleXMLElement Object

(

[0] => TRADE_FINISHED

)

)

[total_fee] => Array

(

[0] => SimpleXMLElement Object

(

[0] => 0.01

)

)

[seller_email] => Array

(

[0] => SimpleXMLElement Object

(

[0] => xxxxx@gmail.com

)

)

[price] => Array

(

[0] => SimpleXMLElement Object

(

[0] => 0.01

)

)

[buyer_id] => Array

(

[0] => SimpleXMLElement Object

(

[0] => xxxxx

)

)

[notify_id] => Array

(

[0] => SimpleXMLElement Object

(

[0] => xxxxx

)

)

)

Array

(

[payment_type] => 1

[subject] => 50个xx

[trade_no] => xxx

[buyer_email] => stefan321@qq.com

[gmt_create] => 2012-02-27 15:26:28

[notify_type] => trade_status_sync

[quantity] => 1

[out_trade_no] => xxxx

[notify_time] => 2012-02-27 15:27:15

[seller_id] => xxxx

[trade_status] => TRADE_FINISHED

[is_total_fee_adjust] => N

[total_fee] => 0.01

[gmt_payment] => 2012-02-27 15:27:15

[seller_email] => xxxxx@gmail.com

[gmt_close] => 2012-02-27 15:27:14

[price] => 0.01

[buyer_id] => xxxxx

[notify_id] => xxxxx

[use_coupon] => N

)

php simplexmlelement object 数组,php中将SimpleXMLElement Object数组转化为普通数组相关推荐

  1. larval mysql 查询转数组_laravel 中将DB::select 得到的内容转为数组

    django处理静态文件 静态文件指的是js css 还有图片这些,配置方法如下 1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.sta ...

  2. php中将SimpleXMLElement Object数组转化为普通数组

    做微信开发,鉴于微信POST的消息是XML数据包,通过SimpleXMLElement Object获取的数据不好操作,需要转化为普通数组. 网上找了很多方法都不理想,发现通过json_decode和 ...

  3. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型 转载于:https://www.cnblogs.com/qingyundian/p/7744351.html

  4. JS数组”(array)和“对象”(object)

    比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对 ...

  5. object转换为数组_从V8源码分析一个JS 数组的内存占用问题

    前段时间,在排查一个问题的时候,遇到了一个有点令人困惑的情况,有下面这两段代码: const a = new Array(99999);a[99998] = undefined; const b = ...

  6. ECMA262 Edition5 Object,Object的属性和方法,Object.prototype的方法.

    ES5,为Object添加了一批方法.了解这些方法,可以更好的理解属性描述符的应用. 所以还是很有必要读一读的.另外,这些方法用起来还是蛮给力的. 暂时对于ES5,就只放出这些吧,希望对大家有所帮助. ...

  7. php object keys_原生js中Object.keys方法详解

    实际开发中,有时需要知道对象的所有属性,原生js提供了一个方法Object.keys(). Object.keys(obj)返回的是一个数组,该数组的所有元素都是字符串.这些元素是来自于给定的obj可 ...

  8. java中object类型_Java常用类object详解

    1.Object概述: 类Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法. 2.构造方法详细信息: Object只有一个无参构造方法,因为ob ...

  9. java object toarray_java从toArray返回Object[]到泛型的类型擦除

    在将ArrayList等Collection转为数组时,函数的返回值并不是泛型类型的数组,而是Object[].刚好最近翻了一遍<java核心技术>,以及参考<Think in Ja ...

最新文章

  1. 大型互联网大型分布式架构演进之路
  2. mysql实现树形_Mysql实现树形递归查询
  3. java cdi是什么意思_Java EE CDI的真正好处
  4. c++类与类之间关系
  5. Rooibos的毒性
  6. 如果没有就插入,如果有就更新
  7. 二叉树——判断一棵树是否是平衡二叉树
  8. 【Es】es 配置文件详解
  9. 《机器人爱好者(第2辑)》——部署机械手或末端执行器
  10. wince6.0添加组件_WINCE6.0添加对viewrs(PDF,Word,Execel和PowerPoint)支持
  11. python中提交post表单_python接口自动化二(发送post请求)
  12. 电脑闪光代码_清华姚班毕业生开发新特效编程语言,99行代码实现冰雪奇缘,网友:大神厉害了!创世的快乐...
  13. ov5640帧率配置_ov5640摄像头设备驱动
  14. BZOJ2827 - 千山鸟飞绝
  15. 基于MPC算法的汽车自适应巡航系统仿真与分析
  16. c++实现简易trpg角色生成器
  17. 导出excel此单元格中的数字为文本格式,或者其前面有撇号
  18. 京东到家数据构造平台设计与实践
  19. Kubernetes 企业集群建设规划
  20. 域名解析配置 以及 修改DNS服务器(腾讯云域名注册商、阿里云DNS服务器)

热门文章

  1. 人一个月瘦多少斤比较合适
  2. TIA博途SCL编程学习16_歌德巴赫猜想验证
  3. 不是所有的努力都会有结果,但是你若不努力,谁能替你坚强??
  4. colab 跑 deformable-detr 记录:
  5. 数据结构作业之输出树的每一条从根节点到叶节点的路径
  6. 币圈的8大女神都是谁?-千氪
  7. docker安装calibre打造数字图书馆: 在线管理pdf等电子图书
  8. HAL库自学笔记#2【PWM】
  9. write和fwrite
  10. 关于帮助他人,别跟自己较劲