所以,我想知道有没有人介意检查一下这个任务并纠正它?我非常确定我已经用我所知道的少量PHP把Python搞混了,而且还有一些开放标签。
基本上,将有一个字段,其中包含讨厌的小数年龄($age,稍后将由适当的字段id替换)。我们的网站为青少年提供几个月的服务,然后为成年人提供几年和四个季节的服务。使用讨厌的年龄,我试图计算四舍五入的年龄值,然后将它们存储为字符串值,然后将其设置为将显示年龄的字段的值($displayagefid,稍后将替换为适当的字段id)。只有特定的用户组会被更新(这个列表很大,所以我把它省略了)。
我也不知道如何使用字符串和另一个变量的值将变量设置为字符串。
请知道我对PHP完全是个新手。这是为了在自托管的MyBB论坛上作为任务运行。提前谢谢你!
<?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.");发布于 2017-07-12 07:57:29
我粗略地看了一下你的代码,第一件突出的事情是你的一些变量赋值是前后颠倒的:
$increment = 0.04167
$age = $age + $increment
floor($age*4) = $seasons
floor($age) = $years
floor($age*12) = $months无论左边是什么,都会被设置为右边的任何东西,所以前两个是可以的,但后三个需要切换。
话虽如此,但在我看来,您并没有正确地处理这个问题。我在你的网站上输入了我的十进制年龄,但是你如何计算季节呢?明天可能是我的生日,昨天可能是我的生日。
你最好让用户输入一个出生日期,然后计算他们的年龄。
$birthday=date_create("2013-03-15");
$today=date_create('now');
$diff=date_diff($birthday,$today);现在,在$diff变量中,您可以检查PHP date的所有元素。因此,首先检查他们是否在18岁以下:
if ($diff->format("%y") < 18) {
$ageInMonths = ($diff->format("%y") * 12) + $diff->format("%m");
$age = "$ageInMonths months";
}如果他们超过18岁,你想要以年为单位的年龄,那么从剩下的月份计算季节。
else {
$ageInYears = $diff->format("%y");
$ageInSeasons = floor($diff->format("%m") / 4);
if ($ageInSeasons > 0) {
$age = "$ageInYears years and $ageInSeasons seasons";
} else {
$age = "$ageInYears years";
}
}https://stackoverflow.com/questions/45045654
复制相似问题