You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于条件从PHP脚本响应返回HTML元素:Cronjob库存通知脚本优化问题

问题分析与解决方案

嘿,你的问题出在循环内的判断逻辑上!现在的代码会对每一个产品单独做判断:如果这个产品库存到了半数,就输出对应的通知;如果没到,就立刻输出“No New Notifications”。这就导致只要有一个产品不满足条件,这句话就会被打印出来,同时满足条件的产品通知也会被打印,所以两种内容会同时出现。

要解决这个问题,我们需要先收集所有符合条件的产品,等遍历完所有产品后,再统一判断输出:有符合条件的就输出这些通知,没有的话再输出“No New Notifications”。

优化后的代码如下:

<?php
include 'DB.php';

$SQL = "SELECT Product_Name, Stock_Count, Stock_Remaining FROM Products WHERE Stock_Count > 0";
$result = $conn->query($SQL);

// 初始化数组,存储所有库存达半数的产品名称
$halfStockProducts = [];

if ($result->num_rows > 0 ){
    while ($row = $result->fetch_assoc()){
        // 注:实际场景中可以考虑用 >= 或 <=,避免因库存为奇数/消耗误差导致漏通知
        if ($row["Stock_Remaining"] == $row["Stock_Count"] / 2){
            $halfStockProducts[] = $row["Product_Name"];
        }
    }

    // 遍历完成后统一判断输出
    if (!empty($halfStockProducts)){
        foreach ($halfStockProducts as $product){
            echo "<p>$product is at half capacity</p>";
        }
    } else {
        echo "<p>No New Notifications</p>";
    }
} else {
    echo "No Products Found";
}
?>

关键优化说明:

  • 新增$halfStockProducts数组,先把所有符合条件的产品名称收集起来,而不是遍历一个就输出一次
  • 将输出逻辑移到循环外部:
    • 数组不为空时,逐个输出符合条件的产品通知
    • 数组为空时,只输出“No New Notifications”
  • 额外建议:实际业务中总库存可能是奇数,或者库存消耗存在微小误差,你可以把判断条件改成$row["Stock_Remaining"] <= $row["Stock_Count"] / 2,这样库存低于或等于半数时都会触发通知,实用性更强~

内容的提问来源于stack exchange,提问作者PureWare -Legends Of Gaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 11:13:13