数组按键排序,具有多级数字(1.1.2,2.1.3 ......)

时间:2017-11-07 09:25:35

标签: php arrays sorting

我需要动态编写一个包含以下键的数组:

  

1.1.2
  2.1.3
  2.1.13

编写完成后,我需要按键排序数据,但得到的结果与需要的结果不同:

$Vals=array("1.1.2"=>"First","2.1.3"=>"Second","2.1.13"=>"Third");
ksort($Vals);

foreach($Vals as $x=>$x_value)
   {
   echo "Key=" . $x . ", Value=" . $x_value;
   echo "<br>";
   }

我明白了:

  

Key = 1.1.2,Value = First
  键= 2.1.13,值=第三
  键= 2.1.3,值=秒

而不是

  

Key = 1.1.2,Value = First
  键= 2.1.3,值=第二
  键= 2.1.13,值=第三

1 个答案:

答案 0 :(得分:6)

您正在进行简单的词典编纂比较,但您尝试比较的是版本号标识符,它们有自己的逻辑。 PHP具有比较此类标准化版本号字符串的功能:version_compare

uksort($Vals, 'version_compare');