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

如何在账户创建超过30天时返回TRUE?

问题分析与修复方案

你的代码无法正常工作主要有两个核心问题,咱们一个个拆解:

1. 混淆了赋值与比较运算符

你代码里用的=是赋值运算符,它会把strtotime("+30 days", time())的结果直接赋值给$udata['joined'],而不是做相等判断。如果要比较两个值是否相等,应该用==(松散比较)或者===(严格比较)。

2. 逻辑完全搞反了

你的代码是在判断“账户创建时间等于30天后的时间”,这和你想要的“账户创建超过30天”完全相悖。正确的逻辑应该是:判断账户创建时间早于当前时间往前推30天的时间戳,或者当前时间与创建时间的差值大于30天对应的秒数。

修复后的代码示例

方案一:用时间戳差值判断(更直观)

// 计算30天对应的总秒数
$thirtyDaysInSeconds = 30 * 24 * 60 * 60;
// 判断当前时间减去创建时间的差值是否超过30天
if (time() - $udata['joined'] > $thirtyDaysInSeconds) {
    return true;
}

方案二:用strtotime生成对比时间

// 获取30天前的时间戳
$thirtyDaysAgo = strtotime("-30 days");
// 判断创建时间是否早于30天前
if ($udata['joined'] < $thirtyDaysAgo) {
    return true;
}

另外提个小细节:PHP里关键字if的首字母不需要大写,虽然语法上不报错,但按照编码规范建议小写,可读性会更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:40:39