Php 访问xml对象中的数据的正确方法是什么
我正在从事一个API项目,在这个项目中,我得到一个XML对象作为响应。响应可以在NewOrder对象(如下)中包含一个或多个产品。但是,当我尝试使用foreach循环显示信息时,如果只有一个条目,则会中断。我想这是因为对象中不存在索引[0]。既然对象中没有[0]i,我如何通过xml对象进行显示。或者如何在对象中添加索引[0]Php 访问xml对象中的数据的正确方法是什么,php,xml,Php,Xml,我正在从事一个API项目,在这个项目中,我得到一个XML对象作为响应。响应可以在NewOrder对象(如下)中包含一个或多个产品。但是,当我尝试使用foreach循环显示信息时,如果只有一个条目,则会中断。我想这是因为对象中不存在索引[0]。既然对象中没有[0]i,我如何通过xml对象进行显示。或者如何在对象中添加索引[0] object(stdClass)#49 (1) { ["NewOrder"] => object(stdClass)#50 (12) { ["BTN"] =>
object(stdClass)#49 (1) {
["NewOrder"] => object(stdClass)#50 (12) {
["BTN"] => string(10) "XXXXXXXXXXXXXXXxx"
["PreOrderTransactionId"] => string(22) "XXXXXXXX"
["PartnerOrderId"] => string(17) "XXXXXXXXXXX"
["QwestOrderId"] => string(9) "N57395699"
["SalesCode"] => string(7) "XXXXXXXX"
["OrderStatus"] => string(7) "Pending"
["OrderStatusCode"] => string(4) "OPEN"
["OrderStatusSourceSystem"] => string(5) "CPLUS"
["OrderStatusMessage"] => string(0) ""
["OrderStatusDate"] => string(10) "2013-12-09"
["OrderStatusTime"] => string(8) "08:02:30"
["ProductFamily"] => array(3) {
[0] => object(stdClass)#51 (2) {
["ProductFamilyName"] => string(7) "BUNDLE+"
["ProductLines"] => object(stdClass)#52 (3) {
["WTN"] => string(10) "3033689919"
["AppointmentDate"] => string(10) "2013-12-20"
["Products"] => object(stdClass)#53 (5) {
["ProductName"] => string(36) "INTERNET 100+ MBPS & HOME PHONE PLUS"
["Usoc"] => string(5) "BBBVC"
["Quantity"] => string(1) "1"
["Action"] => string(1) "I"
["Status"] => string(4) "OPEN"
}
}
}
}
}
}
我尝试了以下方法,但无效:
if (!is_array($this->Orders->NewOrder)) {
$this->Order->NewOrder = array($this->Orders->NewOrder["NewOrder"]);
}
foreach ($this->Orders->NewOrder as $order){?>
我得到以下错误:
致命错误:无法将stdClass类型的对象用作中的数组。我认为,如果NewOrder包含多个对象,则它只是一个数组。在循环之前使用类似的方法:
if (!is_array(yourObject["NewOrder"])) {
yourObject["NewOrder"] = array(yourObject["NewOrder"]);
}
SoapClient有一个始终创建数组的选项,即使这里只有一个元素
return new SoapClient(
'...',
array(
'location' => '...',
/.../
'features' => SOAP_SINGLE_ELEMENT_ARRAYS
)
);
还有其他建议吗?