2017-07-12 19 views
0

私は次のXMLを持っており、商品カテゴリ別に合計する必要があります。現時点では、私はすべての製品の合計を得るために達成しましたが、私はそれらを製品カテゴリー別に合計する必要があります。PHP XMLの集計とグループ化

<?xml version="1.0" ?> 
    <Result> 

    <Record code="198244"> 
    <AC_LNA ncols="2"> 
     <row> 
     <product>banana</product> 
     <qty>1</qty> 
     </row> 
    </AC_LNA> 
    </Record> 

    <Record code="198260"> 
    <AC_LNA ncols="2"> 
     <row> 
     <product>apple</product> 
     <qty>7</qty> 
     </row> 
    </AC_LNA> 
    </Record> 

    <Record code="198901"> 
    <AC_LNA ncols="2"> 
     <row> 
     <product>apple</product> 
     <qty>3</qty> 
     </row> 
    </AC_LNA> 
    </Record> 
    </Result> 

これは、合計のすべての製品を一緒コードです:あなたが製品の数量の配列を構築する必要があり

$xml=new SimpleXMLElement($resp); 
$total = 0; 
foreach ($xml->Record as $cod) { 

foreach ($cod->AC_LNA->row as $lines) 
{ 
    $qty = $lines->qty; 
    $total += floatval($qty); 
} 
} 
echo 'Total is: ' . $total.'<br/>'; 

答えて

0

...

$xml=new SimpleXMLElement($resp); 
$totals = []; 
foreach ($xml->Record as $cod) { 

    foreach ($cod->AC_LNA->row as $lines) 
    { 
     $qty = $lines->qty; 
     $product = (string)$lines->product; 
     if (!isset($totals[$product])){ 
      $totals[$product]=0; 
     } 
     $totals[$product] += floatval($qty); 
    } 
} 
print_r($totals); 
+0

ありがとうございました。ありがとうございました –

+0

商品のようなものを手に入れたときに、要素を文字列にキャストすることがよくあります。 –

0

あなたが保存する必要があります配列の値

$xml = new SimpleXMLElement($resp); 
$total = array(); 

foreach($xml->Record as $cod) 
{ 
    foreach($cod->AC_LNA->row as $lines) 
    { 
     $qty = $lines->qty; 
     if (isset($total[$lines->product])) 
     { 
      $total[$lines->product] += floatval($qty); 
     } 
     else 
     { 
      $total[$lines->product] = floatval($qty); 
     } 
    } 
} 

echo 'Total is: <br/>'; 
print_r($total); 
関連する問題