有许多类似的问题,我几乎有解决方案,但我有一个案例没有像客户想要的那样排序。
我使用以下函数对数组进行排序:
function sortFilesByName($a, $b) {
if (basename(strtolower($a['path'])) == basename(strtolower($b['path']))) {
return 0;
}
return (basename(strtolower($a['path'])) < basename(strtolower($b['path']))) ? -1 : 1;
}
问题是我在排序列表时得到以下顺序:
客户希望将file1.png放在列表的顶部,我不得不说我对如何实现这一点感到有些困惑。任何帮助表示赞赏:)
在给出答案之后我已经接近了,我将我的功能改为:
function sortFilesByName($a, $b) {
return strnatcmp(strtolower(basename($a['path'])), strtolower(basename($b['path'])));
}
它有效!谢谢!
答案 0 :(得分:3)
natsort
功能可以执行您想要的操作:http://php.net/manual/en/function.natsort.php。
答案 1 :(得分:3)
我认为你需要natsort();
功能。它按字母顺序排序。
<?php
$numbers = array("1.gif","2.gif","20.gif","10.gif");
natsort($numbers);
print_r($numbers);
?>
输出
Array
(
[0] => 1.gif
[1] => 2.gif
[3] => 10.gif
[2] => 20.gif
)