我有一个这种格式的数组:
Array
(
[0] => Array
(
[28th February, 2009] => 'bla'
)
[1] => Array
(
[19th March, 2009] => 'bla'
)
[2] => Array
(
[5th April, 2009] => 'bla'
)
[3] => Array
(
[19th April, 2009] => 'bla'
)
[4] => Array
(
[2nd May, 2009] => 'bla'
)
)
我想按日期的升序(基于月、日和年)对它们进行排序。最好的方法是什么?
最初,电子邮件是以 MySQL 日期格式获取的,所以我可以让数组处于这种状态:
Array
[
['2008-02-28']='some text',
['2008-03-06']='some text'
]
也许当它采用这种格式时,我可以遍历它们,删除所有 '-'
(连字符)标记,以便它们保留为整数,使用 array_sort()< 对它们进行排序
并再次遍历它们以对它们进行排序?如果有另一种方法,我会更喜欢,因为我会为每个用户做 3 次循环。
谢谢。
编辑:我也可以这样做:
$array[$index]=array('human'=>'28 Feb, 2009',
'db'=>'20080228',
'description'=>'Some text here');
但是使用这个,是否有任何方法可以单独根据 'db' 元素对数组进行排序?
编辑 2:更新初始 var_dump
最佳答案
使用 ISO (yyyy-mm-dd
) 格式而不是“english”格式,然后只需使用 ksort
函数以正确的顺序排列它们。
不需要删除连字符,ksort
会对字符串键进行字母数字比较,yyyy-mm-dd
格式和词法一样完美顺序与实际日期顺序一致。
编辑 我看到您现在已经更正了您的问题,表明您实际上有一个数组数组,并且排序键位于子数组中。在这种情况下,您应该按照其他地方的建议使用 uksort
,但我建议您根据 DB 格式化日期进行自己的编辑和排序,而不是通过解析人类可读的格式:
function cmp($a, $b)
{
global $array;
return strcmp($array[$a]['db'], $array[$b]['db']);
}
uksort($array, 'cmp');
关于php - 如何在 PHP 中对日期数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597863/