首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MyBB的PHP自动老化任务

MyBB的PHP自动老化任务
EN

Stack Overflow用户
提问于 2017-07-12 06:47:13
回答 1查看 56关注 0票数 0

所以,我想知道有没有人介意检查一下这个任务并纠正它?我非常确定我已经用我所知道的少量PHP把Python搞混了,而且还有一些开放标签。

基本上,将有一个字段,其中包含讨厌的小数年龄($age,稍后将由适当的字段id替换)。我们的网站为青少年提供几个月的服务,然后为成年人提供几年和四个季节的服务。使用讨厌的年龄,我试图计算四舍五入的年龄值,然后将它们存储为字符串值,然后将其设置为将显示年龄的字段的值($displayagefid,稍后将替换为适当的字段id)。只有特定的用户组会被更新(这个列表很大,所以我把它省略了)。

我也不知道如何使用字符串和另一个变量的值将变量设置为字符串。

请知道我对PHP完全是个新手。这是为了在自托管的MyBB论坛上作为任务运行。提前谢谢你!

代码语言:javascript
运行
复制
<?php

function task_age($task)
{
global $mybb, $db;

$increment = 0.04167
$age = $age + $increment
floor($age*4) = $seasons
floor($age) = $years
floor($age*12) = $months

if ($year < 1) {
$display_age = $months, "mnths"
}
elseif ( ! filter_var($year, FILTER_VALIDATE_INT) ){ 
$display_age = $year, "yrs"
}
else {
$display age = $display_age = $years, "yrs", $seasons, "s"
};

$query = $db->query("
UPDATE mybb_userfields userfields
for ($usergroup = a || b || d || all that other crap) {
SET $dispalyagefid = $display_age;
};
");

add_task_log($task, "The age characters task successfully ran.");
EN

回答 1

Stack Overflow用户

发布于 2017-07-12 07:57:29

我粗略地看了一下你的代码,第一件突出的事情是你的一些变量赋值是前后颠倒的:

代码语言:javascript
运行
复制
$increment = 0.04167
$age = $age + $increment
floor($age*4) = $seasons
floor($age) = $years
floor($age*12) = $months

无论左边是什么,都会被设置为右边的任何东西,所以前两个是可以的,但后三个需要切换。

话虽如此,但在我看来,您并没有正确地处理这个问题。我在你的网站上输入了我的十进制年龄,但是你如何计算季节呢?明天可能是我的生日,昨天可能是我的生日。

你最好让用户输入一个出生日期,然后计算他们的年龄。

代码语言:javascript
运行
复制
$birthday=date_create("2013-03-15");
$today=date_create('now');
$diff=date_diff($birthday,$today);

现在,在$diff变量中,您可以检查PHP date的所有元素。因此,首先检查他们是否在18岁以下:

代码语言:javascript
运行
复制
if ($diff->format("%y") < 18) {
$ageInMonths = ($diff->format("%y") * 12) + $diff->format("%m");
$age = "$ageInMonths months";
}

如果他们超过18岁,你想要以年为单位的年龄,那么从剩下的月份计算季节。

代码语言:javascript
运行
复制
else {
$ageInYears = $diff->format("%y");
$ageInSeasons = floor($diff->format("%m") / 4);
if ($ageInSeasons > 0) {
$age = "$ageInYears years and $ageInSeasons seasons";
} else {
$age = "$ageInYears years";
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45045654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档