0

ID 3 がある場所で PAY を取得しようとしていますが、ラベルの電話が表示されていますが、方法が本当にわかりません。すべてを試しました。助けてくれてありがとう!

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
4

3 に答える 3

2

ノードを他の情報と区別するいくつかの情報を知っているので、XPath を使用して、それらすべてを反復処理する代わりに値を直接取得できます。

<?php
$sxe = new SimpleXMLElement($books);
$pay = $sxe->xpath('//item[./Id=3]/Data/pay');

echo (string) $pay[0];

出力:

187.647
于 2013-05-10T18:52:26.393 に答える
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 の場合の支払い値を取得します。

于 2013-05-10T18:30:26.353 に答える