$files = array (
'/test/tmp/file_7.sql.gz',
'/test/tmp/file_9.sql.gz',
'/test/tmp/file_11.sql.gz',
'/test/tmp/file_1.sql.gz',
'/test/tmp/file_3.sql.gz',
'/test/tmp/file_12.sql.gz',
'/test/tmp/file_13.sql.gz',
'/test/tmp/file_10.sql.gz',
'/test/tmp/file_5.sql.gz',
'/test/tmp/file_2.sql.gz',
'/test/tmp/file_8.sql',
'/test/tmp/file_4.sql.gz',
'/test/tmp/file_6.sql.gz',
);
echo "<pre>";
sort($files);
print_r($files);
当使用sort()
时,它会给出如下输出
Array
(
[0] => /test/tmp/file_1.sql.gz
[1] => /test/tmp/file_10.sql.gz
[2] => /test/tmp/file_11.sql.gz
[3] => /test/tmp/file_12.sql.gz
[4] => /test/tmp/file_13.sql.gz
[5] => /test/tmp/file_2.sql.gz
[6] => /test/tmp/file_3.sql.gz
[7] => /test/tmp/file_4.sql.gz
[8] => /test/tmp/file_5.sql.gz
[9] => /test/tmp/file_6.sql.gz
[10] => /test/tmp/file_7.sql.gz
[11] => /test/tmp/file_8.sql
[12] => /test/tmp/file_9.sql.gz
)
但我想要这样
Array
(
[0] => /test/tmp/file_1.sql.gz
[1] => /test/tmp/file_2.sql.gz
[2] => /test/tmp/file_3.sql.gz
[3] => /test/tmp/file_4.sql.gz
[4] => /test/tmp/file_5.sql.gz
[5] => /test/tmp/file_6.sql.gz
[6] => /test/tmp/file_7.sql.gz
[7] => /test/tmp/file_8.sql
[8] => /test/tmp/file_9.sql.gz
[9] => /test/tmp/file_10.sql.gz
[10] => /test/tmp/file_11.sql.gz
[11] => /test/tmp/file_12.sql.gz
[12] => /test/tmp/file_13.sql.gz
)
最佳答案
您必须使用自然顺序
算法:natsort()
:
natsort($files);
并使用array_values()重置索引。例如:
natsort($files);
$files = array_values($files);
echo "<pre>";
print_r($files);
关于php - 当字符串数组包含 int 值时如何对其进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48441931/