php简单xml子节点数加号

发布于 2024-12-11 20:02:53 字数 544 浏览 1 评论 0原文

我想使用 php 简单的 xml 解析像这样的树。

如何将所有tree->item->object->num相加?

我想要一个 int 16 (2 + 4 + 7 + 2 + 1)

<前><代码><树>; <项目> <对象>2<对象>4<项目> <对象>7<对象>2<项目> <对象>1

I want use php simple xml parse some tree like this.

how to plus all the tree->item->object->num?

I want get an int 16 (2 + 4 + 7 + 2 + 1)

<tree>
  <item>
    <object>
      <num>2</num>
    </object>
    <object>
      <num>4</num>
    </object>
  </item>
  <item>
    <object>
      <num>7</num>
    </object>
    <object>
      <num>2</num>
    </object>
  </item>
  <item>
    <object>
      <num>1</num>
    </object>
  </item>
</tree>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

廻憶裏菂餘溫 2024-12-18 20:02:53
$xml = new SimpleXMLElement($yourXMLString);

$acc = 0;
foreach($xml->item as $item)
{
    foreach($item->object as $object)
    {
        $acc += $object->num;
    }
}

echo $acc; // 16
$xml = new SimpleXMLElement($yourXMLString);

$acc = 0;
foreach($xml->item as $item)
{
    foreach($item->object as $object)
    {
        $acc += $object->num;
    }
}

echo $acc; // 16
青萝楚歌 2024-12-18 20:02:53

简单/丑陋的版本:

$dom = new DOMDocument();
$dom->loadXML($your_xml);

$xp = new DOMXPath($dom);

$nums = $xp->query('//num');
$sum = 0;
foreach($nums as $num) {
   $sum += $num->nodeValue;
}
echo $sum;

Simple/ugly version:

$dom = new DOMDocument();
$dom->loadXML($your_xml);

$xp = new DOMXPath($dom);

$nums = $xp->query('//num');
$sum = 0;
foreach($nums as $num) {
   $sum += $num->nodeValue;
}
echo $sum;
饮湿 2024-12-18 20:02:53
$tree = simplexml_load_string($xmlstring);
$nums = $tree->xpath('/tree/item/object/num');

// Array functions to sum the numbers
$sum = array_sum(array_map('intval', $nums));

// or, Loop to sum the number
$sum = 0;
foreach ($nums as $num) {
    $sum += $num;
}
$tree = simplexml_load_string($xmlstring);
$nums = $tree->xpath('/tree/item/object/num');

// Array functions to sum the numbers
$sum = array_sum(array_map('intval', $nums));

// or, Loop to sum the number
$sum = 0;
foreach ($nums as $num) {
    $sum += $num;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文