2012-01-26 9 views
1

私は作成した評価フォーラムを使用して一連の結果を注文しようとしています。これは、投稿後の時間に基づいて新しい評価値を作成することによって機能します。評価式に基づいたPHP配列の注文ですか?

相続人の評価式:評価は残業を減らす(タイムズは、UNIX形式のタイムスタンプされている)

$new_rating = $current_rating/($current_time - $post_time); 

Array 
(
[0] => Submissions Object 
    (
     [title] => Exploits Emerge For Linux Privilege Escalation Flaw 
     [link] => http://test.com 
     [description] => test description test 
     [tags] => hardware,government,libya 
     [rating] => 10 
     [date] => 1327546314 
    ) 

[1] => Submissions Object 
    (
     [title] => High School Students Send Lego Man 24 Kilometers High 
     [link] => http://test.com 
     [description] => test description test 
     [tags] => hardware,government,libya 
     [rating] => 5 
     [date] => 1327546305 
    ) 

私の質問はどのように私は上記の式を使用して、この配列をソートしますでしょうか?または私はこの数式をmysqlのクエリ文に挿入することができますか?

ありがとうございます。

答えて

3

usortとカスタムソート機能を使いたいと思うでしょう。

function get_rating($obj) 
{ 
    $obj->rating/(time() - $obj->date); 
} 

function my_compare_func($a, $b) 
{ 
    $a = get_rating($a); 
    $b = get_rating($b); 
    if($a == $b) return 0; 
    return ($a > $b)? 1: -1; 
} 

usort($array_of_objs, 'my_compare_func'); 
+0

数秒速く –

1

usort()機能を使用する必要があります。 usortが動作するはず使用して、これらの線に沿って

0

何か:

usort($objects, function($a, $b) { 
$rating_of_a = $a['rating']/($current_time - $a['date']); 
$rating_of_b = $b['rating']/($current_time - $b['date']); 

return ($rating_of_a < $rating_of_b) ? -1 : 1; 
}); 
+0

:-)は、彼らがcwallenpooleのがないのと同じであることを考慮していません。 –

関連する問題