php:重新排序数组及其子键

php: Reordering an array and its subkeys

我主要是想做一个排行榜系统。我需要在我的 .yml 文件中放入两种类型的数据:玩家的名字和他们的分数。

这是一个变量转储:

array(3) {
  [0]=>
      array(2) {
        [0]=>
           string(10) "samueljh1_"
             [1]=>
                 int(3)
      }
      [1]=>
      array(2) {
        [0]=>
           string(12) "samueljh1_54"
             [1]=>
                 int(1)
      }
      [2]=>
      array(2) {
        [0]=>
           string(11) "samueljh1_1"
             [1]=>
                 int(8)
}

所以,我想做的是对这个数组进行排序,所以这是按数字顺序排列的 - 整数所在的位置。

基本上,将上面的 var 转储转换为如下内容:

array(3) {
  [0]=>
      array(2) {
        [0]=>
           string(11) "samueljh1_1"
             [1]=>
                 int(8)
      }
      array(2) {
        [1]=>
           string(10) "samueljh1_"
             [1]=>
                 int(3)
      }
      [2]=>
      array(2) {
        [0]=>
           string(12) "samueljh1_54"
             [1]=>
                 int(1)
      }

}

如果这不可能,是否有任何替代方法来存储此数据?

非常感谢,- Sam。

首先,我建议使用玩家名称作为得分值的关联键,并简化数组结构,如下所示:

$testArray = array("samueljh1_" => 3, "samueljh1_54" => 1, "samueljh1_1" => 8);

这使得数组更易于解析,并使数据结构更类似于您拥有的数据之间的关系。那么函数arsort()就是你要找的反向排序的函数:

arsort($testArray, SORT_NUMERIC); // $testArray is passed by reference

var_dump($testArray);

产量

array(3) {
  ["samueljh1_1"]=>
  int(8)
  ["samueljh1_"]=>
  int(3)
  ["samueljh1_54"]=>
  int(1)
}