PHP结合数据库查询与curl拉取多API销售数据如何计算总和
实现方案
你只需要新增一个全局累加变量即可完成销售额统计,修改后的代码如下:
<table> <tr> <th>Name</th> <th>datesale</th> <th>sale</th> </tr> <?php // 初始化总销售额变量,初始值为0 $total_sale = 0; $query = "SELECT * FROM user "; $result = mysqli_query($conn, $query); while($row = mysqli_fetch_array($result)) { $id= $row['id']; $fname = $row['fname']; $lname = $row['lname']; $address = $row['address']; $userid = $row['userid']; //* API // $url = 'api.sample.com/'.$userid; $ch=curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $r=curl_exec($ch); curl_close($ch); $data = json_decode($r, true); // 数组键名需加单引号,避免PHP抛出未定义常量警告 $datesale =$data['datesale']; $sale=$data['sale']; // 累加当前销售额到总变量 if(is_numeric($sale)) { $total_sale += $sale; } ?> <tr> <td><?php echo $fname. " " .$lname;?></td> <td class="centralize"><?php echo $datesale;?></td> <td class="centralize"><?php echo $sale;?></td> <?php } ?> <!-- 新增行显示总销售额 --> <tr> <td colspan="2" style="text-align:right;font-weight:bold;">总销售额:</td> <td class="centralize" style="font-weight:bold;"><?php echo $total_sale;?></td> </tr> </table>
核心逻辑说明
- 在循环查询用户之前先定义
$total_sale变量,初始值设为0,用来存储累加的销售额 - 每次调用接口拿到单个用户的
sale值后,将当前销售额累加到总变量中,同步增加了数字类型判断,避免第三方接口返回异常时导致累加错误 - 所有用户循环结束后,在表格最后新增一行输出
$total_sale即可得到所有销售额的总和
额外优化建议
原代码中date_default_timezone_set('Asia/Manila')不需要放在循环里,放在文件顶部执行一次即可,避免重复执行浪费性能。
内容的提问来源于stack exchange,提问作者user13789330
相关产品推荐
相关产品推荐

