0

我有一个数组,我只是想通过一个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
        )
)
4

1 回答 1

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 上,您可以使用 inline-functoins:

usort(&$myArray, function($a,$b){ /* ... */ });
于 2012-08-26T05:25:39.093 回答