我有我需要排序的d-m-y值的数组,但是我的函数没有正常工作,关于如何修复它的任何想法?排序数组包含使用usort不工作的日期
每个数组元素都包含在下面的格式中:“TB”+ dd + mm + yy +“12”(抱歉,不是我的错xD),所以首先我需要删除额外的字符串,然后重新排序日期一个MMDDYY格式以将其转换使用mktime
usort($periodos, 'date_compare');
function date_compare($a, $b) {
// Reomves "TB" at the beginning and "12" at the end
$t1 = substr($a, 2, -2);
$t2 = substr($b, 2, -2);
$t1 = mktime(0, 0, 0, substr($t1, 4, 2), substr($t1, 2, 2), substr($t1, 6, 2));
$t2 = mktime(0, 0, 0, substr($t2, 4, 2), substr($t2, 2, 2), substr($t2, 6, 2));
return $t1 - $t2;
}
但一些日子是关闭...,我不理解什么可以失败,则输出为:
阵列(151){ [0] = > string(10)“TB07010012” [1] => string(10)“TB23040012” [2] => 串(10) “TB26050012” [3] => 串(10) “TB28050012” [4] => 串(10) “TB21050012” [5] => 串(10) “TB07050012” [6] => 串(10) “TB25060012” [7] => 串(10) “TB16070012” [8] => 串(10) “TB24090012” [ 9] => 串(10) “TB31121312” [10] => 串(10) “TB09011412” [11] => 串(10) “TB16011412” [12] => 串(10 )“TB300 11412" [13] => 串(10) “TB23011412” [14] => 串(10) “TB06021412” ..... .....
和,你可以看到一切似乎没有问题,直到元素13(230114 - > 2014年1月23日)之后的元素12(300114 - > jan 30 2014),还有其他类似的错误,但数组长度为151元,所以我不认为是必要的发布这一切..
感谢您的帮助
尝试的strcmp($ T1,T2 $)代替$ T1 - $ T2 – mseifert
都能跟得上......它没有工作,错误在那里停留 – Chico3001
你可以尝试使用时间戳重新编写数组,并在输出上重新创建日期。 – Nitin