PHP数组按数据库的评分结果排序

时间:2012-08-26 05:20:54

标签: php arrays sorting

我有一个数组,我只是想通过score键来命令,该键包含我要排序的值。所需的结果将更改下面数组的顺序,以按以下顺序显示索引:[0][2][1]

我正在循环从数据库中提取的结果。我正在创建一个名为score的密钥,然后将$row2数组推送到一个单独的数组中,因为如果我使用mysql_data_seek它会删除score密钥。

此外,它还会在底部创建一个不需要的密钥score

如何最好地清理它并确保结果按照需要从高到低排序?

$my_array = array();

while ($row2 = mysql_fetch_assoc($result2))
{
 //score determined here
 //$row2['score'] = ...more math, variable is numeric, not a string
 array_push($array_page,$row2);
}

当前不受欢迎的结果......

Array
(
    [0] => Array
        (
            [score] => 7
        )
    [1] => Array
        (
            [score] => 2
        )
    [2] => Array
        (
            [score] => 4
        )
    [score] => 
)

期望的结果......

Array
(
    [0] => Array
        (
            [score] => 7
        )
    [2] => Array
        (
            [score] => 4
        )
    [1] => Array
        (
            [score] => 2
        )
)

1 个答案:

答案 0 :(得分:1)

function scoreSort($a, $b){
  if($a['score'] == $b['score']) return 0;
  return $a['score'] > $b['score'] ? -1 : 1;
}
usort(&$myArray, 'scoreSort');

在php> 5.3上你可以使用内联函数:

usort(&$myArray, function($a,$b){ /* ... */ });