首页 / PHP / php排序数组使用几个月的键忽略其他键
php排序数组使用几个月的键忽略其他键
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php排序数组使用几个月的键忽略其他键,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1757字,纯文字阅读大概需要3分钟。
内容图文
![php排序数组使用几个月的键忽略其他键](/upload/InfoBanner/zyjiaocheng/741/1c9b00f5e4c54ed9bd6c8e457e57f92c.jpg)
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+$/', $k2, $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排序数组使用几个月的键忽略其他键所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。