从 PHP SimpleXMLElement 中提取数组
Pulling Array from PHP SimpleXMLElement
我想从 PHP SimpleXmlElement 中提取一个数组。
原始的 SimpleXMLElement 结构如下:
object(SimpleXMLElement)[226]
public 'GetLeadDetailResponse' =>
object(SimpleXMLElement)[239]
public 'GetLeadDetailResult' =>
object(SimpleXMLElement)[240]
public 'LeadStat' =>
array (size=4294)
xmlElement 存储在一个名为 $parser
的变量中,我想一直到 'LeadStat' 所以我用以下索引:
$leadStatInfo = $parser->GetLeadDetailResponse->GetLeadDetailResult;
哪个returns我这个对象:
object(SimpleXMLElement)[4534]
public 'LeadStat' =>
array (size=4294)
0 =>
object(SimpleXMLElement)[240]
public 'AdvertiserName' => string 'Modn Grp' (length=12)
public 'AdvertiserId' => string '4539234' (length=6)
public 'Timestamp' => string '2017-08-14T15:23:28.91' (length=22)
public 'Type' => string 'Conversation' (length=15)
public 'VisitId' => string '1442535353670' (length=9)
public 'Attempt' => string '0' (length=1)
public 'AgentName' => string 'Jack A' (length=6)
public 'CustomerName' => string 'John Harris' (length=11)
public 'CustomerEmail' => string 'harris@modn.com' (length=25)
public 'CustomerPhone' =>
object(SimpleXMLElement)[4535]
...
public 'CustomerAddress' =>
object(SimpleXMLElement)[4536]
...
public 'NumberOfMessages' => string '12' (length=2)
1 =>
object(SimpleXMLElement)[4533]
public 'AdvertiserName' => string 'Modn Grp' (length=12)
public 'AdvertiserId' => string '4539234' (length=6)
public 'Timestamp' => string '2017-08-14T17:21:11.157' (length=23)
public 'Type' => string 'Conversation' (length=15)
public 'VisitId' => string '37836763725' (length=9)
public 'Attempt' => string '0' (length=1)
public 'CustomerAddress' =>
object(SimpleXMLElement)[4536]
...
public 'NumberOfMessages' => string '0' (length=1)
more elements...
现在我想获取 LeadStat
数组和 json_encode 它,所以我尝试了以下操作:
json_encode($leadStatInfo->LeadStat)
不幸的是,这只返回了一个对象,而不是数组中的所有对象。
{
"AdvertiserName":"Modn Grp",
"AdvertiserId":"4539234",
"Timestamp":"2017-08-14T15:23:28.91",
"Type":"Conversation",
"VisitId":"1442535353670",
"Attempt":"0",
"AgentName":"Jack A",
"CustomerName":"John Harris",
"CustomerEmail":"harris@modn.com",
"CustomerPhone":{},
"CustomerAddress":{},
"NumberOfMessages":"12"
}
如何拉出完整的数组?
这是因为数组中的对象没有相同的属性吗?
在 SimpleXML 中,$leadStatInfo->LeadStat
并不是一个真正的数组,而是一个可迭代的元素。要获取 LeadStat
中的所有项目,您需要对其进行迭代。
$leadStatArray = array();
foreach($leadStatInfo->LeadStat as $leadStat) {
$leadStatArray[] = $leadStat;
}
json_encode($leadStatArray);
我想从 PHP SimpleXmlElement 中提取一个数组。 原始的 SimpleXMLElement 结构如下:
object(SimpleXMLElement)[226]
public 'GetLeadDetailResponse' =>
object(SimpleXMLElement)[239]
public 'GetLeadDetailResult' =>
object(SimpleXMLElement)[240]
public 'LeadStat' =>
array (size=4294)
xmlElement 存储在一个名为 $parser
的变量中,我想一直到 'LeadStat' 所以我用以下索引:
$leadStatInfo = $parser->GetLeadDetailResponse->GetLeadDetailResult;
哪个returns我这个对象:
object(SimpleXMLElement)[4534]
public 'LeadStat' =>
array (size=4294)
0 =>
object(SimpleXMLElement)[240]
public 'AdvertiserName' => string 'Modn Grp' (length=12)
public 'AdvertiserId' => string '4539234' (length=6)
public 'Timestamp' => string '2017-08-14T15:23:28.91' (length=22)
public 'Type' => string 'Conversation' (length=15)
public 'VisitId' => string '1442535353670' (length=9)
public 'Attempt' => string '0' (length=1)
public 'AgentName' => string 'Jack A' (length=6)
public 'CustomerName' => string 'John Harris' (length=11)
public 'CustomerEmail' => string 'harris@modn.com' (length=25)
public 'CustomerPhone' =>
object(SimpleXMLElement)[4535]
...
public 'CustomerAddress' =>
object(SimpleXMLElement)[4536]
...
public 'NumberOfMessages' => string '12' (length=2)
1 =>
object(SimpleXMLElement)[4533]
public 'AdvertiserName' => string 'Modn Grp' (length=12)
public 'AdvertiserId' => string '4539234' (length=6)
public 'Timestamp' => string '2017-08-14T17:21:11.157' (length=23)
public 'Type' => string 'Conversation' (length=15)
public 'VisitId' => string '37836763725' (length=9)
public 'Attempt' => string '0' (length=1)
public 'CustomerAddress' =>
object(SimpleXMLElement)[4536]
...
public 'NumberOfMessages' => string '0' (length=1)
more elements...
现在我想获取 LeadStat
数组和 json_encode 它,所以我尝试了以下操作:
json_encode($leadStatInfo->LeadStat)
不幸的是,这只返回了一个对象,而不是数组中的所有对象。
{
"AdvertiserName":"Modn Grp",
"AdvertiserId":"4539234",
"Timestamp":"2017-08-14T15:23:28.91",
"Type":"Conversation",
"VisitId":"1442535353670",
"Attempt":"0",
"AgentName":"Jack A",
"CustomerName":"John Harris",
"CustomerEmail":"harris@modn.com",
"CustomerPhone":{},
"CustomerAddress":{},
"NumberOfMessages":"12"
}
如何拉出完整的数组?
这是因为数组中的对象没有相同的属性吗?
在 SimpleXML 中,$leadStatInfo->LeadStat
并不是一个真正的数组,而是一个可迭代的元素。要获取 LeadStat
中的所有项目,您需要对其进行迭代。
$leadStatArray = array();
foreach($leadStatInfo->LeadStat as $leadStat) {
$leadStatArray[] = $leadStat;
}
json_encode($leadStatArray);