在PHP覆盖索引中对2d数组进行排序

时间:2015-08-06 02:01:34

标签: php sorting usort

我有一个像这样的二维数组:

array (size=3)
  0 => 
      array (size=2)
        'player_id' => string '26' (length=2)
        'score' => float 4.702030124427
  1 => 
      array (size=2)
        'player_id' => string '27' (length=2)
        'score' => float 17.891873624039
  2 => 
      array (size=2)
        'player_id' => string '29' (length=2)
        'score' => float 17.883449353824

我使用usort对它进行排序,它变成了这样:

array (size=3)
   1 => 
     array (size=2)
              'player_id' => string '27' (length=2)
              'score' => float 17.891873624039
   2 => 
     array (size=2)
              'player_id' => string '29' (length=2)
              'score' => float 17.883449353824
   0 => 
     array (size=2)
             'player_id' => string '26' (length=2)
             'score' => float 4.702030124427

我的usort功能是:

  uasort($scoreList,function($a, $b) {
                            if($a['score']==$b['score']) return 0;
                                return $a['score'] < $b['score']?1:-1;
                        });

有什么方法可以覆盖索引,所以排序列表变成0,1,2而不是1,2,0?

1 个答案:

答案 0 :(得分:1)

您未使用usort;您正在使用uasortuasort保留密钥,usort会生成新密钥。

http://php.net/manual/en/function.usort.php