我有一个从网站中提取整数值的代码。我想知道我是否可以将所有这些整数加起来并显示总和。
<?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/>';
}
?>
期望的输出: 9768 9321 11407 31611 36506
总计:345664
谢谢!
答案 0 :(得分:1)
只需将其添加为普通变量即可。在顶部初始化零。例如:
$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";
答案 1 :(得分:0)
您可以简单地将整数分配给变量,并在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);
以转换返回的字符串,例如&#34; 97&#34;到int
97。
答案 2 :(得分:0)
看起来你的代码完成了你想要做的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";