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

如何在PHP中基于MySQL日期查询结果为osl数值添加fa-up/fa-down标识

问题核心原因

  • 现有逻辑是将当日osl值和自身做比较,永远无法得到正确的对比结果
  • 缺少变量存储前一日的osl值用于跨周期对比
  • 等于判断误用了赋值符号=,而非比较符号==

修正方案

你可以先将查询结果转为数组后调整顺序,再通过额外变量存储前一日osl值做对比,修正后的代码如下:

<?php 
// 执行查询
$sql_nongadai_kol_kw2 = mysqli_query($kon,"SELECT * FROM vw_nongadai_kanwil ORDER BY TGL_UPDATE DESC LIMIT 31");
// 把结果集转为关联数组
$date_list = mysqli_fetch_all($sql_nongadai_kol_kw2, MYSQLI_ASSOC);
// 反转数组变为日期从早到晚排序,方便对比前一天数据,不需要倒序展示可以去掉这行
$date_list = array_reverse($date_list);

// 初始化前一日osl变量,最早的一天没有前一天数据,默认显示持平标识
$previous_osl = $date_list[0]['osl_total'] ?? 0;
foreach($date_list as $print){
    $tanda = '';
    $current_osl = $print['osl_total'];
    // 对比当前和前一日osl
    if ($current_osl > $previous_osl) {
        $tanda = '<i class="fa fa-long-arrow-up"></i>';
    } elseif ($current_osl < $previous_osl) {
        $tanda = '<i class="fa fa-long-arrow-down"></i>';
    } else {
        $tanda = '<i class="fa fa-long-arrow-v"></i>';
    }
    // 更新前一日osl为当前值,供下一轮循环使用
    $previous_osl = $current_osl;
?>
<tr>
  <th scope="row"><?php echo $print['tgl_update'];?></th>
  <td align="right"><?php echo $tanda;?> - <?php echo number_format($print['osl_total']); ?></td>                            
</tr>                                
<?php } ;?>

补充说明

如果你需要保留日期从新到旧的展示顺序,只需要取消array_reverse行,同时调整首次循环的默认展示规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:15:03