php simplexmlelement object 数组,php中将SimpleXMLElement Object数组转化为普通数组
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数组转化为普通数组相关推荐
- larval mysql 查询转数组_laravel 中将DB::select 得到的内容转为数组
django处理静态文件 静态文件指的是js css 还有图片这些,配置方法如下 1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.sta ...
- php中将SimpleXMLElement Object数组转化为普通数组
做微信开发,鉴于微信POST的消息是XML数据包,通过SimpleXMLElement Object获取的数据不好操作,需要转化为普通数组. 网上找了很多方法都不理想,发现通过json_decode和 ...
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型 转载于:https://www.cnblogs.com/qingyundian/p/7744351.html
- JS数组”(array)和“对象”(object)
比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对 ...
- object转换为数组_从V8源码分析一个JS 数组的内存占用问题
前段时间,在排查一个问题的时候,遇到了一个有点令人困惑的情况,有下面这两段代码: const a = new Array(99999);a[99998] = undefined; const b = ...
- ECMA262 Edition5 Object,Object的属性和方法,Object.prototype的方法.
ES5,为Object添加了一批方法.了解这些方法,可以更好的理解属性描述符的应用. 所以还是很有必要读一读的.另外,这些方法用起来还是蛮给力的. 暂时对于ES5,就只放出这些吧,希望对大家有所帮助. ...
- php object keys_原生js中Object.keys方法详解
实际开发中,有时需要知道对象的所有属性,原生js提供了一个方法Object.keys(). Object.keys(obj)返回的是一个数组,该数组的所有元素都是字符串.这些元素是来自于给定的obj可 ...
- java中object类型_Java常用类object详解
1.Object概述: 类Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法. 2.构造方法详细信息: Object只有一个无参构造方法,因为ob ...
- java object toarray_java从toArray返回Object[]到泛型的类型擦除
在将ArrayList等Collection转为数组时,函数的返回值并不是泛型类型的数组,而是Object[].刚好最近翻了一遍<java核心技术>,以及参考<Think in Ja ...
最新文章
- 大型互联网大型分布式架构演进之路
- mysql实现树形_Mysql实现树形递归查询
- java cdi是什么意思_Java EE CDI的真正好处
- c++类与类之间关系
- Rooibos的毒性
- 如果没有就插入,如果有就更新
- 二叉树——判断一棵树是否是平衡二叉树
- 【Es】es 配置文件详解
- 《机器人爱好者(第2辑)》——部署机械手或末端执行器
- wince6.0添加组件_WINCE6.0添加对viewrs(PDF,Word,Execel和PowerPoint)支持
- python中提交post表单_python接口自动化二(发送post请求)
- 电脑闪光代码_清华姚班毕业生开发新特效编程语言,99行代码实现冰雪奇缘,网友:大神厉害了!创世的快乐...
- ov5640帧率配置_ov5640摄像头设备驱动
- BZOJ2827 - 千山鸟飞绝
- 基于MPC算法的汽车自适应巡航系统仿真与分析
- c++实现简易trpg角色生成器
- 导出excel此单元格中的数字为文本格式,或者其前面有撇号
- 京东到家数据构造平台设计与实践
- Kubernetes 企业集群建设规划
- 域名解析配置 以及 修改DNS服务器(腾讯云域名注册商、阿里云DNS服务器)