PHP排序

Señ*_*cis 2 php sorting

我正在尝试对每个条目具有多个值的关联数组进行排序.

例如

[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)

我希望数组按'得分'排序(最高得分是第一个索引)

我该怎么做?

Gum*_*mbo 8

使用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)


skr*_*bel 5

如果你有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的方法是故障安全方式.