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

如何实现PHP中echo $row[]的值自动根据日期动态匹配

解决PHP动态根据日期获取数组对应值的问题

嘿,这个需求其实很好实现,核心思路就是把动态生成的月份字符串作为数组的键来取值,不用手动修改代码。我结合你的代码片段给你调整一下:

首先,先明确几个关键点:

  • 你已经用$d = strtotime("-1 Month")获取了上个月的时间戳
  • 用date("M", $d)可以得到对应的月份缩写(比如Apr、May这类)
  • 只需要把这个月份缩写(或者你例子里带空格的格式)作为$row的索引,就能动态输出对应的值

修改后的代码片段

<?php
date_default_timezone_set("Asia/Kuala_Lumpur");
$today = strtotime("today");
$d = strtotime("-1 Month");
// 生成动态的键名:如果你的数据库字段是带前后空格的,就用下面这行;如果不带空格,就去掉前后的空格
$monthKey = ' ' . date("M", $d) . ' ';
// 如果字段名是不带空格的,改成这行:$monthKey = date("M", $d);

include("config/view-graph.php");
$sql = "SELECT * FROM settings where id = '1'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        // 这里直接用动态生成的键名取值
        echo $row[$monthKey];
        // 如果你还要输出月份名称,可以保留原来的date输出,比如:
        // echo date("M", $d) . ": " . $row[$monthKey];
    }
}
?>

额外注意事项

  • 确保数据库里的字段名和$monthKey的格式完全一致:比如大小写(Apr和apr是不同的键)、是否带空格,如果不一致的话,可以用strtoupper()/strtolower()统一格式,比如$monthKey = strtoupper(date("M", $d));
  • 如果担心上个月跨年份的问题(比如1月的上个月是去年12月),strtotime("-1 Month")已经能正确处理,不用额外调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:11:54