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

PHP如何按二维数组每行首个子元素的text字段对数组排序

问题原因

  • usort()是原地排序函数,通过引用修改传入的原数组,返回值为布尔类型(排序成功返回true,失败返回false)。你直接将usort()的返回值赋值给$product_categories,把原数组直接覆盖成了布尔值true(打印时显示为1),这是print_r只输出1的核心原因。
  • 比较函数逻辑有误:外层数组的每个元素$a、$b本身就是包含3个键值对的子数组,你需要取子数组中下标为0的元素的text字段做对比,原代码直接取$a['text']属于索引不存在的错误调用。

正确实现代码

通用版本(兼容所有PHP版本)

// 直接调用usort即可,不需要接收返回值,函数会原地修改数组
usort($product_categories, 'sortAlphabetically');

function sortAlphabetically($a, $b) {
    return strcmp($a[0]['text'], $b[0]['text']);
}

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

PHP7.4+ 简化版本(箭头函数写法)

usort($product_categories, fn($a, $b) => strcmp($a[0]['text'], $b[0]['text']));
print_r($product_categories);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:03