0

私はこの問題に数日間立ち往生しています。一見簡単な問題に頭を悩ませているようには見えません。

これが配列で、温度で並べ替えたいと思います。降順。

[0] => Array
    (
        [name] => Sandnes
        [latitude] => 58.85244
        [longitude] => 5.73521
        [temperature] => 12.0
    )

[1] => Array
    (
        [name] => Sola
        [latitude] => 58.88854
        [longitude] => 5.65285
        [temperature] => 12.3
    )

[2] => Array
    (
        [name] => Kleppe
        [latitude] => 58.77303
        [longitude] => 5.63329
        [temperature] => 12.1
    )

[3] => Array
    (
        [name] => Hommersåk
        [latitude] => 58.93167
        [longitude] => 5.85111
        [temperature] => 11.3
    )

[4] => Array
    (
        [name] => Ålgård
        [latitude] => 58.76417
        [longitude] => 5.85253
        [temperature] => 10.9
    )

[5] => Array
    (
        [name] => Stavanger
        [latitude] => 58.97005
        [longitude] => 5.73332
        [temperature] => 11.9
    )

[6] => Array
    (
        [name] => Tananger
        [latitude] => 58.93618
        [longitude] => 5.5741
        [temperature] => 12.5
    )

[7] => Array
    (
        [name] => Bryne
        [latitude] => 58.73536
        [longitude] => 5.64766
        [temperature] => 12.4
    )

PHP に付属するさまざまなソート機能を使用して複数のソリューションを試しましたが、うまくいきませんでした。

この質問のバリエーションを見てきましたが、答えは常に異なります。私が見た解決策のいくつかを実装しようとして失敗した後、あなたの何人かが助けになることを願っています.

4

3 に答える 3

2

ukratic によって最初に提案されたように、これはうまくいきました。

function compare_temp($a,$b)
{
    if($a['temperature'] == $b['temperature']) return 0;
    return ($a['temperature'] < $b['temperature']) ? 1 : -1;
}
usort($places, 'compare_temp');
于 2013-06-28T04:09:31.570 に答える
2

次の方法で簡単に修正できますusort()

usort($arr, function ($a, $b){
  return ($b["temperature"]-$a["temperature"]);
});

PHP マニュアルの例は、$a, $b結果が昇順になるように比較されます。この提案$b,$aは、並べ替え順序を逆に比較します。

PHP リファレンスは次のとおりです: usort()

于 2013-06-28T04:11:19.530 に答える