2009-12-26 56 views
-1

多年工作现在我已经使用数学公式来确定留言板的相对活动级别。现在我想在php搜索引擎中使用该公式来替换不起作用的Google Page Ranking系统。更改电子表格公式,使其与PHP

使用的数据项为:会员(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

没有关于实际电子表格的更多细节,想出一个工作解决方案是非常非常困难的。虽然在一般,你可能想要写,看起来像这样的功能:

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函数的调用,所以我从我的示例中删除了它。

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); 

希望有所帮助。

+0

哇!您不仅解决了我的问题,而且实际上帮助我同时改进了电子表格。 E2采取董事会创建日期并衡量董事会存在的时间。该持续时间号码是公式其余部分使用的。 – Rick 2009-12-27 02:53:40