我正在尝试获得PAY,其中有ID 3标签电话 但我真的不知道怎么样,我尝试了一切。 谢谢你的帮助!
以下是XML代码:
$books = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
<login>1</login>
<arrStatsData>
<item>
<Id>500</Id>
<Label>website_name</Label>
<Data>
<item>
<Id>4</Id>
<Label>transactions</Label>
<Data>
<sum>2029.34</sum>
<cst>47.67575</cst>
<num>86</num>
<avg>23.6</avg>
<pay>1981.66</pay>
</Data>
</item>
<item>
<Id>3</Id>
<Label>Phone</Label>
<Data>
<sum>205</sum>
<cst>17.353</cst>
<num>205</num>
<avg>1</avg>
<pay>187.647</pay>
</Data>
</item>
......
PHP代码:
$xml = simplexml_load_string($arrResult); //load xml from above
foreach($xml->arrStatsData->item->Data as $item)
{
foreach($item->item as $DATA)
{
echo $DATA->Id.'<br>';
}
我现在的结果是:
1981.66
187.647
-0.4448
答案 0 :(得分:2)
由于你知道一些告诉节点与其他节点不同的信息,你可以使用XPath直接获取值而不是遍历所有这些:
<?php
$sxe = new SimpleXMLElement($books);
$pay = $sxe->xpath('//item[./Id=3]/Data/pay');
echo (string) $pay[0];
187.647
答案 1 :(得分:0)
您的PHP代码如下:
$xml = simplexml_load_string($books);
foreach($xml->arrStatsData->item->Data as $item)
{
//echo '$item;';
foreach($item->item as $DATA)
{
if($DATA->Id == '3'){
echo $DATA->Data->pay."<br/>";
}
}
}
当ID等于3时,它会检索付款值。
答案 2 :(得分:0)
Rolando Isidoro推荐xpath
的速度更快,我的解决方案略有不同,这也是我发布的原因:
$pay = (string)$xml->xpath("//item[Id = '3']/Data/pay")[0];
echo $pay;