我想基于CRITICAL
,WARNING
,INFO
子字符串进行排序PHP数组,然后CRITICAL
,WARNING
,INFO
子阵列应该再次戳值包含在每个时间排序按照顺序排列的字符串。 基本上最后我需要阵列与CRITICAL
1日进行排序与时间戳进行排序,然后WARNING
然后INFO
等..排序PHP数组有两个子
0
A
回答
0
获取关键排定的顺序
function my_cmp($a, $b){
$pieces_a = explode("CRITICAL", $a);
$pieces_b = explode("CRITICAL", $b);
if(!isset($pieces_a[1]) && isset($pieces_b[1])) {
return 1;
}
elseif(!isset($pieces_b[1]) && isset($pieces_a[1])) {
return -1;
}
elseif(!isset($pieces_a[1]) && !isset($pieces_b[1])) {
return 0;
}
return strcasecmp($pieces_a[1], $pieces_b[1]);
}
usort($arr, "my_cmp");
在但这只能如果排序每行都有非空格,我的意思是单个单词。
想知道其他解决方案吗?
1
首先,定义一个函数将一行的紧急性转化为一个数字。然后,假设数组中的每个元素包含文件的一行,则需要应用装饰器以保持排序稳定;又见my earlier answer关于这个问题:
array_walk($array, function(&$element, $index) {
$element = array($element, $index); // decorate
});
应用装饰后,你对数组进行排序;我使用的是稳定的比较帮手:
function stablecmp($fn)
{
return function($a, $b) use ($fn) {
if (($tmp = call_user_func($fn, $a[0], $b[0])) != 0) {
return $tmp;
} else {
return $a[1] - $b[1];
}
};
}
usort($array, stablecmp(function($a, $b) {
return urgency($b) - urgency($a);
}));
最后,去除装饰的阵列来产生最终结果:
array_walk($array, function(&$element) {
$element = $element[0];
});
相关问题
- 1. PHP数组排序两次
- 2. PHP排序数组子阵列两个字段
- 3. 由两个数组排序多维数组PHP
- 4. PHP排序一个数组
- 5. PHP多个数组排序
- 6. 组合和排序两个数组Java?
- 7. 就地排序有2个排序子阵列的数组
- 8. php - 按子对象排序数组
- 9. php按子值排序数组
- 10. 如何按子串排序数组? (PHP)
- 11. 排序通过两个整数数组
- 12. 由两个参数排序的数组
- 13. PHP排序数组
- 14. 排序PHP数组
- 15. 排序PHP数组
- 16. PHP数组排序
- 17. PHP数组排序
- 18. PHP排序数组
- 19. PHP数组排序()
- 20. 排序数组PHP
- 21. PHP数组排序
- 22. PHP:排序数组
- 23. 有两个表PHP排序值导致
- 24. 排序从两个子类
- 25. 按子数组值排序子数组?
- 26. 排序数组PHP PHP usort
- 27. 我怎样才能排序数组子阵列的一个子数组值? (PHP)
- 28. PHP - 基于排序数组的排序因子:: usort?
- 29. PHP:排序数组降序
- 30. 排序多维数组由两个值
没有什么明确的.... – Naincy 2014-11-24 06:47:05
请提供您的阵列格式 – 2014-11-24 06:49:00
$键= (array_keys($ eventinfo [ “消息”])); ($ i = 0; $ i". $key.":”。$ arrTmp [$ tmp]; } $ tmp ++; } } $ result_str = events_print($ cumltvArray); $ cumltvArray是我通过events_print –
kkr
2014-11-24 07:08:07