将提取的数据中的整数相加


Adding up integers from extracted data

我有一个代码可以从网站中提取整数值。我想知道我是否可以把所有这些整数加起来,并显示总和。

<?php
header('Content-Type: text/html; charset=utf-8');
$grep = new DoMDocument();
@$grep->loadHTMLFile("http://www.lelong.com.my/Auc/List/BrowseAll.asp");
$finder = new DomXPath($grep);
$class = "CatLevel1";
$nodes = $finder->query("//*[contains(@class, '$class')]");
foreach ($nodes as $node) {
    $span = $node->childNodes;
    echo str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    echo '<br/>';
}    
?>

期望输出:97689321114073161136506

总计:345664

谢谢!

只需像普通变量一样将其相加即可。初始化顶部的零。示例:

$total = 0;
foreach ($nodes as $node) {
    $span = $node->childNodes;
    $number = preg_replace("/[^0-9]/", '', $span->item(1)->nodeValue);
    echo '<br/>';
    $total += (int) $number;
}
echo "Total: $total";

您可以简单地将整数分配给一个变量,并将它们与foreach 的每次迭代相加

$total = 0;
foreach ($nodes as $node) {
    $span = $node->childNodes;
    echo str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    $total += $span->item(1)->nodeValue;
    echo '<br/>';
}
echo "Total: ".$total;

更新:确保$span->item(1)->nodeValue)中得到的是整数而不是字符串。您可以将$total += $span->item(1)->nodeValue;修改为$total += intval($span->item(1)->nodeValue);,以将返回的字符串(如"97")转换为int 97。

看起来您的代码完成了90%的任务,相比之下,整数的加法应该相对简单。

假设这部分返回整数:

foreach ($nodes as $node) {
    $span = $node->childNodes;
    echo str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    echo '<br/>';
} 

更改为:

$total = 0;
foreach ($nodes as $node) {
    $span = $node->childNodes;
    $integer = str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    $total += $integer;
    echo "$integer<br/>";
} 
echo "Total: $total";