我有我需要排序的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