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

基于子数组第三个元素对多维数组升序排序的技术需求

按子数组第三个元素升序排序多维数组

嘿,针对你这个PHP多维数组排序的需求,直接用usort()函数配合自定义比较逻辑就能轻松搞定,毕竟它就是用来处理这种自定义规则排序场景的。

完整可运行代码

// 补全你给出的示例数组(假设截断部分为同类字符串格式)
$targetArray = [
    [30, 'AbdulA', 'TEST White Truck 7 am 9:30 am 12 pm 2:30 pm', 8, 12],
    [31, 'AbdulAnn', 'TEST White Truck 7 am 9:30 am 12 pm 2:30 pm', 2, 8],
    [32, 'pacha', 'TEST Red Van 8 am 10:30 am 1 pm 3:30 pm', 5, 10]
];

// 核心排序逻辑:按子数组的第三个元素(索引为2)升序排列
usort($targetArray, function($subArrA, $subArrB) {
    // 你的第三个元素是字符串,用strcmp做字典序比较
    return strcmp($subArrA[2], $subArrB[2]);
});

// 输出验证排序结果
print_r($targetArray);

代码细节说明

  • usort():PHP内置的用户自定义排序函数,会直接修改原数组(如果需要保留原数组,记得先复制一份:$sortedArray = $targetArray;再操作副本)。
  • 匿名比较函数:每次取两个子数组对比,因为PHP数组从0开始索引,所以第三个元素对应索引2:
    • 若第三个元素是字符串,strcmp()是最优选择,它会按字典序比较,返回负数则$subArrA在前,正数则$subArrB在前,0则顺序不变。
    • 若第三个元素是数字,直接用return $subArrA[2] - $subArrB[2];实现升序,反过来就是降序。

容错处理(可选)

如果你的多维数组里可能存在子数组长度不足3的情况,为避免Undefined offset错误,可以加兜底判断,把缺失第三个元素的子数组放到排序结果末尾:

usort($targetArray, function($subArrA, $subArrB) {
    $valA = isset($subArrA[2]) ? $subArrA[2] : '';
    $valB = isset($subArrB[2]) ? $subArrB[2] : '';
    return strcmp($valA, $valB);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:22:33