使用PHP添加TOTAL数量的XML项目

时间:2014-04-11 16:27:26

标签: php foreach simplexml

我正试图在自行车共享系统中获得次数的自行车。我使用php和simpleXML来过滤the XML data

我已成功检索每个电台的自行车数量。

foreach ($xml->station as $items) {
print $items->nbBikes;
}

但我希望所有车站都能提供总数的自行车。我试过这个来声明一个变量($ totalBikes),它每次都通过foreach语句添加到自身,但是它不起作用。

foreach ($xml->station as $items) {
print $items->nbBikes;

    $numberOfBikes = $items->nbBikes;   
    $totalBikes= $numberOfBikes += $numberOfBikes;

}

 print $totalBikes;

有人可以建议一种获得自行车总数的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

你想将$ numberofbikes添加到$ totalbikes,而不是自己:

$totalBikes += $numberOfBikes;

的快捷方式
$totalBikes = $totalbikes + $numberOfBikes;

请务必确认' $ totalbikes'在你的foreach循环之前,所以它不会在每次迭代时重置。

答案 1 :(得分:0)

您在循环中声明了$ totalBikes,因此每次迭代时它都会重置。此外,您没有正确地将$ numberOfBikes添加到$ totalBikes。试试这个:

$totalBikes = 0;
foreach ($xml->station as $items) {
    $numberOfBikes = $items->nbBikes;
    $totalBikes += $numberOfBikes;
}
print $totalBikes;

答案 2 :(得分:0)

使用xpath

而不是迭代
$bikes = $xml->xpath("/stations/station/nbBikes");
$sum = array_sum(array_map("intval", $bikes));

line 1会将所有<nbBikes>选为数组,但选择为SimpleXml个对象 line 2会先将所有元素转换为Integer,然后将其添加。

注意:对于单行,sum中有一个xpath - 函数,但我无法使其工作。有什么想法吗?

$sum = $xml->xpath("sum(/stations/station/nbBikes)")[0];