Q
訂購陣列日期
2
A
回答
0
如果您只需要使用數組中的這2個項目進行排序,則可以在一維整數數組中將單個項目中的年份和日期連接起來並有類似的東西:
201204
201105
201105
201106
201108
並在這種排序後,它像一個ussual一維數組,但降序。
3
假設該格式代表month|year
和你運行PHP 5.3+:
usort($array, function ($a, $b) {
$toTime = function ($str) {
list($month, $year) = explode('|', $str);
return mktime(0, 0, 0, $month, 1, $year);
}
$a = $toTime($a);
$b = $toTime($b);
if ($a == $b) {
return 0;
}
return $a < $b ? -1 : 1;
});
+0
+1正在處理非常類似的事情:) – kapa 2011-05-13 07:23:20
3
如果您使用類似於SQL的日期格式(YYYY-MM-DD),那麼你可以在字符串直接日期排序任何訂單。
如果日期格式不能改變:
<?php
$a = array(
'04|2012',
'05|2011',
'05|2011',
'06|2011',
'08|2011',
);
function compare_strange_dates($date1, $date2) {
return strcmp(
implode('-', array_reverse(explode('|', $date1))),
implode('-', array_reverse(explode('|', $date2)))
);
}
usort($a, 'compare_strange_dates'); // ascending
$d = array_reverse($a); // descending
var_dump($a);
var_dump($d);
如果你只想要降序排列,交換$ DATE1和$ DATE2在compare_strange_dates()return語句,只usort使用。
1
隨着$dates
是你的陣列,你可以做(demo)
usort($dates, function($a, $b) {
return DateTime::createFromFormat('m\|Y', $b)->format('U')
- DateTime::createFromFormat('m\|Y', $a)->format('U');
});
print_r($dates);
,這並不需要轉換爲日期,應該是更快的替代,將是(demo)
usort($dates, function($a, $b) {
return preg_replace('#(\d{2})\|(\d{4})#', '$2$1', $b)
- preg_replace('#(\d{2})\|(\d{4})#', '$2$1', $a);
});
print_r($dates);
兩個輸出
Array
(
[0] => 04|2012
[1] => 08|2011
[2] => 06|2011
[3] => 05|2011
[4] => 05|2011
)
注意:a由於lambda表達式,這些需要PHP 5.3+。
相關問題
- 1. 訂購日期列表
- 2. PHP:陣列訂購
- 3. svn標籤按訂購日期排列
- 4. 如何按日期訂購?
- 5. SQLite的訂購日期
- 6. 訂購日期SQLite中
- 7. 如何按日期訂購?
- 8. 訂購EXIF日期/時間
- 9. 按價值訂購陣列
- 10. 訂購由子陣列
- 11. 訂購從NumPy的陣列
- 12. 所有訂單的日期,訂購desc
- 13. 需要從訂單表中獲得所有客戶的第一個訂購日期和最後訂購日期
- 14. 如何訂購字符串日期? CriteriaBuilder
- 15. 在ggplot2中訂購x軸日期值
- 16. 訂購帖子日期或關鍵字
- 17. WordPress的查詢 - 訂購meta_value_num和日期
- 18. mysql:訂購表的日期名稱
- 19. 訂購JTable受日期限制
- 20. 訂購日期UNION選擇查詢ALL
- 21. 訂購日期爲預計在MySQL
- 22. 貝寶訂購下一付款日期
- 23. 以最早的日期爲準訂購
- 24. 如何按日期訂購部件?
- 25. 在Oracle中訂購VARCHAR2日期
- 26. SQL命令查詢訂購日期
- 27. 訂購由get_posts日期定製metabox值
- 28. 如何修復System.IndexOutOfRangeException:訂購日期
- 29. 訂購基於當前日期
- 30. 訂購日期時間的MySQL
這是你的數組鍵值? – jimy 2011-05-13 07:20:12