我正在尝试对每个条目具有多个值的关联数组进行排序.
例如
[0] => stdClass Object ( [type] => node [sid] => 158 [score] => 0.059600525242489 )
[1] => stdClass Object ( [type] => node [sid] => 247 [score] => 0.059600525242489 )
Run Code Online (Sandbox Code Playgroud)
我希望数组按'得分'排序(最高得分是第一个索引)
我该怎么做?
使用usort功能与此对比功能:
function cmpByScore($a, $b) {
if ($a['score'] == $b['score']) {
return 0;
}
return $a['score'] > $b['score'] ? 1 : -1;
}
usort($array, 'cmpByScore');
Run Code Online (Sandbox Code Playgroud)
如果你有PHP 5.3,你可以使用闭包来使它更加动态和漂亮,方式很简单:
function sortby(&$array, $key)
{
usort($array, function($a, $b) {
return ($a[$key] - $b[$key]);
});
}
Run Code Online (Sandbox Code Playgroud)
另请注意,如同tj111和我所建议的那样,使用sort函数中的减号,如果你还打算对字符串进行排序,那么将会非常糟糕.在这种情况下,Gumbo的方法是故障安全方式.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |