我想基於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