如果我像这样使用sort()
使用SORT_NUMERIC
:
<?php
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
sort($array1, SORT_NUMERIC);
print_r($array1);
输出以PHP 5.5 / 5.6的顺序递增(如预期):
数组([0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png)
但是在PHP 7中,它的顺序是相反的:
数组([0] => img12.png [1] => img10.png [2] => img2.png [3] => img1.png)
那么为什么sort()
在PHP 7中以相反的顺序使用SORT_NUMERIC
呢?
$ array1 = array(“img10.png”,“img12.png”,“img2.png”,“img1.png”);
排序($数组1,SORT_NATURAL);
的print_r($数组1);
将给出结果数组([0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png)
因为数组值不是严格的数值,所以在这种情况下PHP 7根本不排序。
<?php
$array1 = $array2 = array("img12.png", "img2.png", "img10.png", "img1.png");
sort($array1, SORT_NUMERIC);
print_r($array1);
数组([0] => img12.png [1] => img2.png [2] => img10.png [3] => img1.png)
<?php
$array1 = $array2 = array("12", "2", "10", "1");
sort($array1, SORT_NUMERIC);
print_r($array1);
数组([0] => 1 [1] => 2 [2] => 10 [3] => 12)
请改用natsort()
。 http://php.net/manual/en/function.natsort.php