我已经坚持这个问题了几天了。我似乎无法绕过看似简单的问题。
这是阵列,我想按温度对其进行排序。降序。
[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提供的许多不同的排序功能,但没有运气。
我见过这个问题的变体,但他们的答案总是不同的。在尝试实施我见过的一些解决方案后,我希望你们中的一些人可能会有所帮助。
答案 0 :(得分: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');
答案 1 :(得分:2)
使用usort()
进行轻松修复:
usort($arr, function ($a, $b){
return ($b["temperature"]-$a["temperature"]);
});
PHP手册示例按$a, $b
的顺序进行比较,以提供升序结果。此建议比较$b,$a
以反转排序顺序。
以下是PHP参考:usort()
答案 2 :(得分:0)
试试这个希望它可以帮助你
$array = $your_array
foreach ($array as $key => $row) {
$temperature[$key] = $row['temperature'];
}
array_multisort($temperature, SORT_DESC, $array);
echo "<pre>";
print_r($array);
echo "</pre>";
看到这个小CODEPAD DEMO