我有一个d-m-y值的数组,我需要排序,但我的功能不正常,有关如何修复它的任何想法?
每个数组元素包含以下格式:“TB”+ dd + mm + yy +“12”(不好意思不是我的错xD),所以首先我需要删除额外的字符串,然后将日期重新排序为a使用mktime
转换它的mmddyy格式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;
}
但是有些日子已经过去......我不明白什么可能失败,输出是:
array(151){ [0] => string(10)“TB07010012” [1] => string(10)“TB23040012” [2] => string(10)“TB26050012” [3] => string(10)“TB28050012” [4] => string(10)“TB21050012” [5] => string(10)“TB07050012” [6] => string(10)“TB25060012” [7] => string(10)“TB16070012” [8] => string(10)“TB24090012” [9] => string(10)“TB31121312” [10] => string(10)“TB09011412” [11] => string(10)“TB16011412” [12] => string(10)“TB30011412” [13] => string(10)“TB23011412” [14] => string(10)“TB06021412” ..... .....
并且你可以看到一切似乎都没有,直到元素12(300114 - > 2014年1月30日)应该在元素13之后(230114 - > 2014年1月23日),还有其他类似的错误,但数组是151元素很长所以我认为不是必须发布它...
感谢您的帮助
答案 0 :(得分:0)
经过一些建议我注意到我的substr索引是错的...我在这里留下了正确的功能以防万一有同样的问题......
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, 2, 2), substr($t1, 0, 2), substr($t1, 4, 2));
$t2 = mktime(0, 0, 0, substr($t2, 2, 2), substr($t2, 0, 2), substr($t2, 4, 2));
return $t1 - $t2;
}