如何实现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
相关产品推荐
相关产品推荐

