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

PHP循环中对比MySQL查询结果不同行价格并设置显示颜色如何实现

实现方案

核心问题在于你当前是边读取数据库结果边输出,没有存储全量价格数据,无法完成跨行对比。你需要先把所有查询结果存到数组中,先计算好价格对比的基准值,再遍历渲染。

下面以「价格高于全量商品平均价标红,低于等于标黑」的需求为例,修正后的代码如下:

$sql = "SELECT * FROM goods ORDER BY id DESC LIMIT 100";
$result = $conn->query($sql);
$goods_list = [];
$total_price = 0;

if ($result->num_rows > 0) {
    // 第一步:先把所有数据存到数组,同时计算总价
    while($row = $result->fetch_assoc()){
        $goods_list[] = $row;
        $total_price += $row['price'];
    }
    // 计算平均价作为对比基准
    $avg_price = $total_price / count($goods_list);
    
    // 第二步:遍历数组渲染
    foreach($goods_list as $item){
        $product_name = $item['product'];
        $product_price = $item['price'];
        // 对比设置颜色
        if($product_price > $avg_price){
            $color = 'red';
        }else{
            $color = 'black';
        }
        // 修正原代码的变量拼写错误
        echo "<div><span style='color:$color;'>Price: $product_price</span> Product: $product_name</div>";
    }
}else{
    echo "0 results";
}

如果你需要更细分的颜色规则,比如价格前20%标红、中间50%标橙、后30%标黑,可以提前把所有价格排序,算出分位值作为对比基准即可,逻辑和上面一致。


内容的提问来源于stack exchange,提问作者user16745306

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:45:00