php排序数组使用几个月的键忽略其他键

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php排序数组使用几个月的键忽略其他键脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Array
(
    [strMachineGroupID] => MC000027
    [strMachineGroup] => 1
    [APRil-201904_QTY] => 1
    [February-201902_QTY] => 1
    [January-201901_QTY] => 1
    [July-201907_QTY] => 1
    [June-201906_QTY] => 1
    [MArch-201903_QTY] => 1
    [May-201905_QTY] => 1
    [strMachineGroupIDUE] => MC000027
    [April-201904_UE] => 1.00
    [February-201902_UE] => 1.00
    [January-201901_UE] => 1.00
    [July-201907_UE] => 1.00
    [June-201906_UE] => 1.00
    [March-201903_UE] => 1.00
    [May-201905_UE] => 1.00
)

这是我的查询结果中的数组.我想对这个数组进行排序,以便结果将按月顺序显示索引(从1月到12月).

我希望那个1月和其他几个月一样.

我试过用:

//     $value = (array)$value;
    //     print_r($value);
    //     print_r(asort($value));
    //     print_r(krsort($value));
    //     print_r(ksort($value));

但他们确实有效.我还在努力做这个.

任何这样做的想法都会有所帮助.

解决方法

您需要使用 uksort来比较密钥.此回调函数将按键的日期排序到开头(依赖于这些键中包含6位yyYYMM字符串的事实),然后在日期之间进行排序.非日期键按字母顺序排序.

uksort($array,function ($k1,$k2) {
    if (preg_match('/^\w+-(\d{6})_\w+$/',$k1,$m1)) {
        if (preg_match('/^\w+-(\d{6})_\w+$/',$k2,$m2)) {
            // both have dates,sort on that
            return strcmp($m1[1],$m2[1]);
        }
        else {
            // dates sort First
            return -1;
        }
    }
    elseif (preg_match('/^\w+-(\d{6})_\w+$/',$m2)) {
        // dates sort first
        return 1;
    }
    else {
        // neITher is a date,sort alphabetically
        return strcmp($k1,$k2);
    }
});

输出

Array (
    [January-201901_UE] => 1
    [January-201901_QTY] => 1
    [February-201902_QTY] => 1
    [February-201902_UE] => 1
    [March-201903_UE] => 1
    [March-201903_QTY] => 1
    [April-201904_UE] => 1
    [April-201904_QTY] => 1
    [May-201905_UE] => 1
    [May-201905_QTY] => 1
    [June-201906_QTY] => 1
    [June-201906_UE] => 1
    [July-201907_UE] => 1
    [July-201907_QTY] => 1
    [strMachineGroup] => 1
    [strMachineGroupID] => MC000027
    [strMachineGroupIDUE] => MC000027 
)

Demo on 3v4l.org

脚本宝典总结

以上是脚本宝典为你收集整理的php排序数组使用几个月的键忽略其他键全部内容,希望文章能够帮你解决php排序数组使用几个月的键忽略其他键所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。