我有一个代码可以从网站中提取整数值。我想知道我是否可以把所有这些整数加起来,并显示总和。
<?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";