我是一個設計網站,訂購其投票和年齡的結果。PHP MYSQL查詢算法幫助
我找到了reddit算法,我認爲這是最好的使用。但是,我不知道如何實現這個到php。我搜索了谷歌如何做到這一點,但我找不到任何結果。我不知道這是否意味着什麼,因爲我不知道我應該搜索什麼。
但是我知道基本的PHP,有沒有一種方法可以以一種簡單的方式實現這一點。
是否有可能做這樣的:
"SELECT * FROM table ORDER BY algorithm_here DESC";
的reddit的算法如下:
Log10(Z) + ((Y*Ts)/45000) = rank
A = time posted
B = 00:00:001 am 1/1/2010
U = Up votes
D = Down votes
Ts = A-B
X = U-D
Y =
1 if x>0
0 if x=0
-1 if x<0
z = max(abs(x),1)
我知道如何在PHP中創建函數,例如function test(){... 但是,這會爲查詢工作嗎? ($ a,$ u,$ d){ $ ts = $ a - 1262304001; $ x = $ u - $ d; if($ x> 0) \t $ y = 1; ($ x = 0) \t $ y = 0; elseif($ x <0) \t $ y = -1; \t $ z = max(abs($ x),1); $ rank = log10($ z)+(($ y * $ ts)/ 45000); print($ rank); } – Xplane 2010-12-05 19:52:47
在php中不創建函數並不是明智的。因爲如果你這樣做了,唯一能夠正常工作的方法是加載所有行並通過fn傳遞每一行以生成等級,然後使用等級對列表重新排序,然後將其切片到所需的頁面。 這將工作,如果你只有更少的行像1000行左右的總數。 BT如果你有超過10萬行和所有。它不可能運行,因爲PHP在加載所有行時會耗盡內存。 所以最好的辦法是通過MySQL。 但是你不需要隨UDF的進步,因爲它相當先進。 – 2010-12-05 20:00:39