如何对 php 中的字母数字多维数组进行排序?

How can I sort an alphanumerical Multidimensional Array in php?

我在多维数组中有一些 json 文件名,创建方式如下:$files[] = array("name" => $file, "type" => "json") 我想 升序 排序:

1.File
2.File
3.File
10.File
11.File

如果我使用 php sort($files) 功能订购它们,它们将按如下方式订购:

1.File
10.File
11.File
2.File
3.File

但是,如果我使用 natsort($files) 引述:按照人类 (php.net) 的方式排序字母数字字符串,我就会一团糟:

3.File
2.File
10.File
1.File
11.File

是否有更好的方法使用 php 函数对数组进行排序?或者我是否必须构建自定义排序功能。服务器是 运行 PHP 7.0.

您使用多维数组,如您所见,PHP 有一个错误 (Array to string conversion),您需要为该任务使用 usort,例如:

$array = array(
    array("name"=>'1.File', "type" => "json"),
    array("name"=>'2.File', "type" => "json"),
    array("name"=>'3.File', "type" => "json"),
    array("name"=>'10.File', "type" => "json"),
    array("name"=>'11.File', "type" => "json"),
    );
usort($array, function($a, $b) {
    return ($a['name'] > $b['name'])
           ? 1 
           : ($a['name'] < $b['name'])
             ? -1 
             : 0;
});
print_r($array);

Your fiddle edited

参考:


正如@u_mulder 所建议的那样,strnatcasecmp 将改进如下代码:

usort($array, function($a, $b) {
    return strnatcasecmp($a['name'], $b['name']);
});

参考: