做微信第三方接口接入的时候发现接口返回的数据都是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) "产品权限验证失败,请查看您当前是否具有该产品的权限"
}
网友评论