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

如何按reference字段的数值部分对PHP多维数组排序?

按带短横线的reference字段排序PHP多维数组

要实现按包含短横线的字母数字类型reference字段排序,以下两种方法可以直接解决你的需求:

方法一:usort() + strnatcmp()组合

strnatcmp()会按照自然排序规则对比字符串,能正确识别数字部分的数值大小,完美适配带短横线的字母数字场景。

// 原始数组
$array = [
    ['other_value' => 'y', 'reference' => '423-52'],
    ['other_value' => 'y', 'reference' => '223-52'],
    ['other_value' => 'y', 'reference' => '5423-52'],
    ['other_value' => 'y', 'reference' => '823-52'],
    ['other_value' => 'y', 'reference' => '123-52']
];

// 执行排序
usort($array, function($a, $b) {
    return strnatcmp($a['reference'], $b['reference']);
});

// 输出结果
print_r($array);

执行后将得到你预期的排序结果:

Array
(
    [0] => Array
        (
            [other_value] => y
            [reference] => 123-52
        )

    [1] => Array
        (
            [other_value] => y
            [reference] => 223-52
        )

    [2] => Array
        (
            [other_value] => y
            [reference] => 423-52
        )

    [3] => Array
        (
            [other_value] => y
            [reference] => 823-52
        )

    [4] => Array
        (
            [other_value] => y
            [reference] => 5423-52
        )
)

方法二:array_multisort()批量排序

先提取所有reference字段的值,再基于自然排序规则对原数组排序,适合需要同时处理多字段排序的场景:

// 提取reference列的所有值
$references = array_column($array, 'reference');

// 按自然排序规则同步排序原数组
array_multisort($references, SORT_NATURAL, $array);

print_r($array);

此方法同样能得到符合预期的排序结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:05:26