所以,我想知道是否有人介意检查并纠正它?我非常确定我已经把Python和我所知道的一点PHP混为一谈了,而且有开放的标签。
基本上,会有一个字段,其中讨厌的十进制年龄($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.");
我粗略地看了一下你的代码,首先突出的是你有一些变量赋值:
$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 日期的所有元素。因此,首先检查他们是否未满 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";
}
}