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

时间:2015-04-10 13:06:26

标签: php arrays numerical leaderboard

我基本上试图建立一个排行榜系统。我需要在我的.yml文件中放入两种类型的数据:播放器的名称及其分数。

这是一个var转储:

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。

1 个答案:

答案 0 :(得分:1)

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

$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)
}