脚本宝典收集整理的这篇文章主要介绍了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 )
以上是脚本宝典为你收集整理的php排序数组使用几个月的键忽略其他键全部内容,希望文章能够帮你解决php排序数组使用几个月的键忽略其他键所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。