PHP爬虫抓取网站数据时如何在for循环中对大量数值求和
解决方案
方案1:循环内直接累加(推荐,性能最优、代码量最少)
不需要额外遍历数组,直接在你现有的取值循环中增加累加逻辑即可:
$url = file_get_contents('https://website.test/'); $webDoc = new DOMDocument(); libxml_use_internal_errors(TRUE); //disable libxml errors if(!empty($url)) { $webDoc->loadHTML($url); libxml_clear_errors(); $urlData = new DOMXPath($webDoc); $row = $urlData->query('//span[@class="stat_now_big"]'); $total = 0; // 初始化总和变量 for ($i = 1; $i <= 114; $i += 6) { $currentVal = str_replace( ',', '', $row->item($i)->nodeValue); $getVal[$i] = $currentVal; $total += (float)$currentVal; // 直接累加,强转数值类型避免字符串拼接问题 } $GetUnique= $getVal[1]; $data = [ 'unique' => number_format($GetUnique), 'total' => number_format($total) // 可直接输出格式化后的总和 ]; echo json_encode($data);
方案2:用数组求和函数(适合不想修改原有循环逻辑的场景)
如果你的$getVal数组里只存了需要求和的20个数值,直接调用PHP内置的array_sum()函数即可,不需要手动拼接每一个键名:
$total = array_sum($getVal);
该函数会自动遍历数组所有非空元素完成求和,即使数组键是不连续的也不会影响结果。
内容的提问来源于stack exchange,提问作者Romani Kandelaki
相关产品推荐
相关产品推荐

