我使用一个PHP变量来计算从今天到创建条目的天数:
DATEDIFF(NOW(), l.created)
我怎么能写一个PHP方程,其中该值的前30天乘以每个1分,然后30-60天乘以每个2分,然后60-90天乘以每个3分,以此类推,直到自创建以来的总天数,然后所有的积分相加。
所以如果某样东西只被创造了15天,那么它就会得到15分。但如果某样东西已经创作了45天,它就会得到60分(30 * 1 + 15 * 2)。
算法:
$d = <number of days>;
$m = intval($d / 30); // completed months
$r = intval($d % 30); // remaining days beyond that
$score = ($m * ($m + 1) / 2) * 30 + ($m + 1) * $r;
// ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^
// accumulated levels final lvl.
例子:对于$d = 45
,我们有$m = 1
和$r = 15
,得到30 + 2*15 = 60
。
这是一个独立的SQL公式,但你必须自己用子查询或连接或其他东西把它连接到你的函数:
SELECT TRUNCATE((TRUNCATE(d/30, 0) * (TRUNCATE(d/30, 0) + 1) / 2) * 30 + (TRUNCATE(d/30, 0) + 1) * (d % 30), 0) AS score
FROM (SELECT 45 AS d) AS t;
for ($i = 0; $i < $number; $i++) $points += ceil($i / 30);
<?
$day_num = 90;
$points = 0;
for($i=1;i<=$day_num;$i++)
{
$points += ceil($i/30);
}
echo $points;
?>