首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在php中对字母数字多维数组进行排序?

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

Stack Overflow用户
提问于 2022-02-02 13:00:00
回答 1查看 79关注 0票数 1

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

代码语言:javascript
复制
1.File
2.File
3.File
10.File
11.File

如果我使用php sort($files)函数对它们进行排序,它们将按如下方式排序:

代码语言:javascript
复制
1.File
10.File
11.File
2.File
3.File

但是,如果我使用natsort($files)这个引号:按人的方式订购字母数字字符串(https://www.php.net/manual/en/function.natsort.php),我就会搞得一团糟:

代码语言:javascript
复制
3.File
2.File
10.File
1.File
11.File

是否有更好的方法使用php函数对数组进行排序?或者我必须构建一个自定义排序函数。服务器正在运行PHP7.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-02 13:22:50

您使用多维数组,正如您可以看到PHP (Array to string conversion)一样,您需要使用usort来执行该任务,如下所示:

代码语言:javascript
复制
$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将改进代码如下:

代码语言:javascript
复制
usort($array, function($a, $b) {
    return strnatcasecmp($a['name'], $b['name']);
});

参考资料:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70956081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档