You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 7+ 多维数组按order值升序排序方法咨询

在PHP 7+中按order字段对关联多维数组升序排序的方法

嘿,这个需求在日常开发里挺常见的!针对你的关联多维数组,我们可以用PHP的uasort()函数配合PHP7新增的**太空船操作符(<=>)**来实现,既能按order字段升序排序,还能保留原数组的关联键名,完美适配你的场景。

核心实现思路

uasort()是PHP专门为关联数组设计的自定义排序函数——它允许你通过自定义规则排序,同时会保留数组的键值映射关系,不会像sort()那样把键重置为数字索引。而PHP7的太空船操作符则让比较逻辑变得异常简洁,一行代码就能完成整数的大小比较。

完整代码示例

$multiArray = array( 
    "description" => array( "order" => 3, "title" => '' ), 
    "gallery" => array( "order" => 1, "title" => '' ), 
    "params" => array( "order" => 2, "title" => '' ), 
    "video" => array( "order" => 4, "title" => '' ) 
);

// 按order字段升序排序
uasort($multiArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});

// 输出排序后的结果
print_r($multiArray);

代码说明

  • 匿名函数作为uasort()的回调函数,每次会接收两个待比较的子数组$a和$b
  • 太空船操作符<=>会自动处理整数比较:如果$a['order']小于$b['order']返回-1,相等返回0,大于则返回1——这完全符合uasort()对回调返回值的要求,直接实现升序排序
  • 排序完成后,原数组的"gallery"、"params"这些关联键会被完整保留

排序后的结果

执行上面的代码后,输出结果如下:

Array
(
    [gallery] => Array
        (
            [order] => 1
            [title] => 
        )

    [params] => Array
        (
            [order] => 2
            [title] => 
        )

    [description] => Array
        (
            [order] => 3
            [title] => 
        )

    [video] => Array
        (
            [order] => 4
            [title] => 
        )
)

额外小技巧

如果之后需要改成降序排序,只需要调换回调里$a和$b的位置即可:

uasort($multiArray, function($a, $b) {
    return $b['order'] <=> $a['order'];
});

内容的提问来源于stack exchange,提问作者Evgeniy Chorniy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:47:41