2016-08-01 6 views
0

私はソートする必要があるd-m-y値の配列を持っていますが、私の関数は正しく動作しません。usortを使って日付を含むソート配列

各配列要素は、 "TB" + dd + mm + yy + "12"(申し訳ありませんが自分のフォールトxD)の形式で格納されていますので、まず余分な文字列を削除し、 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; 
} 

を使用してそれを変換するMMDDYY形式が、いくつかの日がオフになっている...と私は失敗することができるかを理解いけない、出力は次のとおり

アレイ(151){ [0] = > 文字列(10) "TB07010012" [1] => 文字列(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 - > 23年1月23日)の後になければならない要素12(300114 - > jan 30 2014)まで、すべてがokと思われますが、他の同様の間違いがありますが、配列は151要素なので、 ..私は私のsubstrのインデックスが間違っていることに気づいたいくつかの提案をした後、あなたの助け

+0

するTryのstrcmp($ T1、$ t2の) - $ t2の – mseifert

+0

はいや...それは働いていたdidntの、エラーが発生し – Chico3001

+0

あなたのままタイムスタンプを使用して配列を書き直し、出力時に日付を正しい形式に再作成することができます。 – Nitin

答えて

0

ため

感謝し、それをすべて掲載...イムはcorreを残します代わりに$ T1の誰かが同じ問題を抱えている場合には、ここでのCT機能...

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; 
} 
+0

これがあなたの質問に対する正解であることを幸せに思うなら、それを受け入れるべきです。 – rjdown

+0

私はやります...しかし、私は2日、感謝を待つ必要があります! – Chico3001

関連する問題