做微信第三方接口接入的时候发现接口返回的数据都是xml格式的。
以下是如何把xml格式转化为普通的数组格式取值。
xml格式数据:
$xmlstr="<xml> <mch_appid>".$data['mch_appid']."</mch_appid> <mchid>".$data['mchid']."</mchid> <nonce_str>".$data['nonce_str']."</nonce_str> <partner_trade_no>".$data['partner_trade_no']."</partner_trade_no> <openid>".$data['openid']."</openid> <check_name>".$data['check_name']."</check_name> <amount>".$data['amount']."</amount> <desc>".$data['desc']."</desc> <spbill_create_ip>".$data['spbill_create_ip']."</spbill_create_ip> <sign>".$data['sign']."</sign></xml>"; $res =$this->curl_post_ssl($api, $xmlstr);
xml转化为数组步骤:
$xml = simplexml_load_string($res , 'SimpleXMLElement' , LIBXML_NOCDATA );
但是转化过来的并不是普通的php数组,而是SimpleXMLElement Object数组 结果如下:
object(SimpleXMLElement)#11 (5) { ["return_code"]=> string(7) "SUCCESS" ["return_msg"]=> string(7) "NO_AUTH" ["result_code"]=> string(4) "FAIL" ["err_code"]=> string(7) "NO_AUTH" ["err_code_des"]=> string(73) "产品权限验证失败,请查看您当前是否具有该产品的权限" }
接下来 进行简单粗暴的强制类型转换
SimpleXMLElement Object数组 转化为普通数组步骤:
$xml_data = ((array)$xml);
如果如下:
array(5) { ["return_code"]=> string(7) "SUCCESS" ["return_msg"]=> string(7) "NO_AUTH" ["result_code"]=> string(4) "FAIL" ["err_code"]=> string(7) "NO_AUTH" ["err_code_des"]=> string(73) "产品权限验证失败,请查看您当前是否具有该产品的权限" }
标签:XML,xml,SimpleXMLElement,string,code,数组,data From: https://www.cnblogs.com/minch/p/17516267.html