php排序版本字符串数组

我想在 php.ini 中对一组版本字符串进行排序。


输入将是这样的:


["2019.1.1.0", "2019.2.3.0", "2019.2.11.0", "2020.1.0.0", "2019.1.3.0", "2019.3.0.0"]

对此进行排序的最简单方法是什么?按原样对字符串进行排序不起作用,因为这会将“2019.2.11.0”放在“2019.2.3.0”之前,这当然不是我想要的。


结果应该是


["2019.1.1.0", "2019.1.3.0", "2019.2.3.0", "2019.2.11.0", "2019.3.0.0", "2020.1.0.0"]


慕容3067478
浏览 107回答 2
2回答

繁花如伊

您正在寻找自然排序。$versions = ["2019.1.1.0", "2019.2.3.0", "2019.2.11.0", "2020.1.0.0", "2019.1.3.0", "2019.3.0.0"];$sorted = $versions;natsort($sorted);Array(    [0] => 2019.1.1.0    [4] => 2019.1.3.0    [1] => 2019.2.3.0    [2] => 2019.2.11.0    [5] => 2019.3.0.0    [3] => 2020.1.0.0)

撒科打诨

你应该使用version_compare函数。这是usort与 version_compare 一起使用的方法。$a = ["2019.1.1.0", "2019.2.3.0", "2019.2.11.0", "2020.1.0.0", "2019.1.3.0", "2019.3.0.0"];usort($a, 'version_compare');var_dump($a);结果array(6) {  [0]=>  string(10) "2019.1.1.0"  [1]=>  string(10) "2019.1.3.0"  [2]=>  string(10) "2019.2.3.0"  [3]=>  string(11) "2019.2.11.0"  [4]=>  string(10) "2019.3.0.0"  [5]=>  string(10) "2020.1.0.0"}
打开App,查看更多内容
随时随地看视频慕课网APP