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

PHP多维索引数组按指定子元素排序问题求助

按子数组第0个元素排序多维数组(保持元素关联)

没问题,这个需求在PHP里用自定义排序函数就能轻松搞定,我来给你一步步讲清楚怎么实现:

完整代码示例

<?php
$fruits = array(
    array(2, 'apple'),
    array(1, 'orange'),
    array(4, 'banana'),
    array(3, 'kiwi'),
);

// 用usort配合自定义回调实现排序
usort($fruits, function($a, $b) {
    // 核心逻辑:比较两个子数组的第0个元素
    return $a[0] - $b[0];
});

// 查看排序后的结果
print_r($fruits);
?>

代码细节解释

  • usort()是PHP专门用来做自定义规则排序的函数,它会直接对原数组进行排序(如果想保留原数组,可以先复制一份再操作,比如sortedFruits = $fruits; usort($sortedFruits, ...))。
  • 匿名回调函数里的$a和$b代表数组中任意两个待比较的子数组,我们通过$a[0] - $b[0]来对比它们的第0个元素:
    • 结果为负数时,$a排在$b前面;
    • 结果为正数时,$b排在$a前面;
    • 结果为0时,两者相对顺序保持不变。

运行后的结果

执行代码后,你会得到完全符合预期的排序结果:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => orange
        )

    [1] => Array
        (
            [0] => 2
            [1] => apple
        )

    [2] => Array
        (
            [0] => 3
            [1] => kiwi
        )

    [3] => Array
        (
            [0] => 4
            [1] => banana
        )
)

兼容低版本PHP的写法

如果你的PHP版本低于5.3(不支持匿名函数),可以单独定义比较函数再传入:

function compareSubArrays($a, $b) {
    return $a[0] - $b[0];
}
usort($fruits, 'compareSubArrays');

拓展:降序排序

如果需要按子数组第0个元素降序排列,只需要把回调里的计算逻辑反过来:

usort($fruits, function($a, $b) {
    return $b[0] - $a[0];
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:09