3

構築中のフォーラム プログラムの検索機能を作成しています。ある時点で、数値であり、そのディメンションの 1 つとして「スコア」を含む searchResults という配列があります (他は「timeStarted」、「authorUID」、および「TID」です)。

したがって、この配列はこの時点で混乱しているため、$searchResults[1] が最高の「スコア」になり、[2] が 2 番目に高くなるように整理する必要があります。php.net の array_multisort を見ました。しかし、それがどのように機能するかについてすぐに迷子になりました。では、$searchResults を数値順に並べ替える (キーを並べ替える) には、並べ替えメカニズムとして、さらに次元 '並べ替え' の降順で降順で並べ替えるにはどうすればよいでしょうか? それに伴うコードは実際にはありませんが、配列がどのように見えるかのレイアウトが必要な場合は、次のようにします。

$searchResults:
   [1] - ['timeStarted']
         ['authorUID']
         ['score']   <- Need to sort first dimension by this value descending
         ['TID']
   etc.

助けてくれてありがとう。

4

2 に答える 2

5

usort 指定された比較関数によるソートが可能

$cmp = function($a,$b) {return $b['score'] - $a['score'];};
usort($searchResults, $cmp);

この場合、$cmp は['score'] の値に基づいて $searchResults の2 つの要素$aを比較する関数です。$b$cmp は、等しい場合は 0 を返し、より大きい場合$a['score']は負の値を返し、より大きい場合は正の値を返します$b['score']。通常は逆になりますが、降順で並べ替えることが望ましいです。

于 2011-03-26T03:30:30.013 に答える
0

必要な関数はusortです。例 2 を見てください。

<?php
function cmp($a, $b)
{
    return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits, "cmp");

while (list($key, $value) = each($fruits)) {
    echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
?>

出力:

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons
于 2011-03-26T03:31:52.967 に答える