以下是相关数组的一部分:
Array
(
[Pricing] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[MType] => A
[PType] => JBN
)
[PSNumber] => 19753
[CCode] => USD
[EDate] => 2008-12-19
[Price] => 218.23
)
现在我想访问'Ptype'和'Price'的值。
'价格'很简单$a = (float) $price_a['Pricing'][0]->Price;
但是我无法弄清楚'Ptype'我已经尝试了所有内容,而我得到的最接近的是$price_a['Pricing'][0]->{@attributes}
输出:
SimpleXMLElement Object
(
)
我确信这有一个简单的解决方案,我很想念它,所以任何帮助都表示赞赏。谢谢!
答案 0 :(得分:2)
$ptype = $price_a['Pricing'][0]->attributes()->Ptype;
答案 1 :(得分:2)
不是吗:
$price_a['Pricing'][0]->attributes()->PType
答案 2 :(得分:2)
SimpleXMLElement
var_dump()
,否则您会感到困惑。您肯定不必须将节点放入数组中才能访问它们,这没有意义。
在SimpleXML中,您使用->
(如对象的属性)访问节点,并使用属性,就像它们是数组索引一样。例如
$xml->node;
$xml['attribute'];
发布您的源XML,而不是发布var_dump()
的输出。例如,猜测你的实际XML,代码就像
$Pricings = simplexml_load_string(
'<Pricings>
<Pricing MType="A" PType="JBN">
<PSNumber>19753</PSNumber>
<CCode>USD</CCode>
<EDate>2008-12-19</EDate>
<Price>218.23</Price>
</Pricing>
<Pricing MType="B" PType="XYZ">
<PSNumber>12345</PSNumber>
<CCode>USD</CCode>
<EDate>2008-12-19</EDate>
<Price>218.23</Price>
</Pricing>
</Pricings>'
);
// value of the first node's @PType
$Pricings->Pricing[0]['Ptype'];
// value of the first node's Price
$Pricings->Pricing[0]->Price;
// value of the second node's @PType
$Pricings->Pricing[1]['Ptype'];
如果您的代码比这更复杂,那么您做错了,而您只是在寻找麻烦。请记住,它被称为简单 XML。