我在多维数组中有一些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)这个引号:按人的方式订购字母数字字符串(https://www.php.net/manual/en/function.natsort.php),我就会搞得一团糟:
3.File
2.File
10.File
1.File
11.File是否有更好的方法使用php函数对数组进行排序?或者我必须构建一个自定义排序函数。服务器正在运行PHP7.0。
发布于 2022-02-02 13:22:50
您使用多维数组,正如您可以看到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);你的小提琴编辑
参考资料:
正如@u_mulder建议的那样,strnatcasecmp将改进代码如下:
usort($array, function($a, $b) {
return strnatcasecmp($a['name'], $b['name']);
});参考资料:
https://stackoverflow.com/questions/70956081
复制相似问题