多年来,我已经使用数学公式来确定留言板的相对活动水平。现在我想在php搜索引擎中使用该公式来替换无法运行的Google Page Ranking系统。
使用的数据项是:成员(B2),帖子(D2),主题(C2)和委员会创建日期(E2)。在电子表格中,基本公式如下所示:
=SUM(((((((B2/E2)+(C2/E2)+(D2/E2)))*0.419)))+((((((B2/C2)+(B2/D2))/2)+(((C2/B2)+(D2/B2))/3)-3.4777)))/7)+0.0017
硬(非生成)数字是我手工计算的数字,用于提供输出,似乎提供接近Alexa流量排名的结果,我每年都会修改它们。输出始终保持4位小数。
答案 0 :(得分:4)
首先,您的等式可以简化很多。现在,你有这个:
=SUM(
(
(
(
(
(
(B2/E2) + (C2/E2) + (D2/E2)
)
)
*
0.419
)
)
)
+
(
(
(
(
( (B2/C2) + (B2/D2) ) / 2
)
+
(
( (C2/B2) + (D2/B2) ) / 3
)
-
3.4777
)
)
)
/
7
)
+
0.0017
SUM函数似乎没用,因为你只有不同的单元格,而不是范围。此外,可以删除许多括号。因此,函数变为:
(
(
B2/E2 + C2/E2 + D2/E2
)
*
0.419
+
(
( B2/C2 + B2/D2 ) / 2
+
( C2/B2 + D2/B2 ) / 3
-
3.4777
)
/
7
)
+
0.0017
将其写成一个班轮:
0.0017 + ((B2/E2 + C2/E2 + D2/E2) * 0.419 + ((B2/C2 + B2/D2) / 2 + (C2/B2 + D2/B2) / 3 - 3.4777) / 7)
要使其成为PHP,请使用变量替换单元格地址:
0.0017 + (($members / $date + $topics / $date + $posts / $date) * 0.419 + (($members / $topics + $members / $posts) / 2 + ($topics / $members + $posts / $members) / 3 - 3.4777) / 7)
你可能想要创建一个函数,它将返回四位小数四舍五入的结果:
function ranking($members, $posts, $topics, $date) {
$ranking = 0.0017 + (($members / $date + $topics / $date + $posts / $date) * 0.419 + (($members / $topics + $members / $posts) / 2 + ($topics / $members + $posts / $members) / 3 - 3.4777) / 7);
return round($ranking, 4);
}
你可以这样调用这个函数(我不知道E2的日期是什么,因此30000):
$ranking = ranking(50, 60, 20, 30000);
希望有所帮助。
答案 1 :(得分:0)
如果没有关于实际电子表格的更多细节,那么提出一个有效的解决方案是非常困难的。一般来说,你可能想写一个看起来像这样的函数:
function calculate_ranking($members, $posts, $topics, $creation_date) {
return ((((((($members/$creation_date)+($topics/$creation_date)+($posts/$creation_date)))*0.419)))+(((((($members/$topics)+($members/$posts))/2)+((($topics/$members)+($posts/$members))/3)-3.4777)))/7)+0.0017;
}
如果您在电子表格中发布一些示例行,那么制作有效的解决方案会更容易。我不确定我完全理解你对sum函数的调用,所以我从我的例子中删除了它。