2017-08-04 8 views
1

特定の日から最新の時刻を取得する必要があります。この例では金曜日です。私はタイムスタンプを継承する$arrayFridayという配列を持っています。 今、私はどのタイムスタンプが同じ日に最新であるかを並べ替える必要があります。PHPで配列の特定の時刻を並べ替える

アレイ$arrayFriday

Array 
(
    [0] => 1483691580 
    [1] => 1483696140 
    [2] => 1483701240 
    [3] => 1483720920 
    [4] => 1489142460 
    [5] => 1489144140 
    [6] => 1489150260 
    [7] => 1489750920 
    [8] => 1489760160 
    [9] => 1489765800 
    [etc.] 
) 

この配列では、私はまで働いていた時間があります。例: 06.01.2017 17:42私は家に帰った時でした。

(この例の)出力は次のようになります。

Array 
(
    [0] => 1483720920 
    [1] => 1489150260 
    [2] => 1489765800 
) 

または私は$ integerFriday(GMT + 1)からそれをエコー場合:

06.01.2017 17:42 
10.03.2017 13:51 
17.03.2017 16:50 

ので出力も配列です、同じ日の最新のタイムスタンプをソートしただけです。

私の試み:

foreach ($arrayFriday as $key => $value) { 
    if(date('m.d.Y', $value) == date('m.d.Y', $arrayFriday[$key-1])){ 
     $integerFriday= $value; 
    } else { 
     echo date('l d.m.Y H:i', $integerFriday); 
    } 
} 
+0

ので、あなたが望むものを出力? –

+0

私が書いたところ 'この例の出力は次のようになります:'私の試行は整数からのエコーに基づいていましたが、配列に挿入することも可能です。 – GePu

+0

だから、このようにしてください:-https://eval.in/841759 –

答えて

3

があなたの結果配列のキーとして日付を使用してください。タイムスタンプの配列がソートされている場合、これだけで必要です。同じ日付の後続の値は、タイムスタンプを反復するにつれてその日付キーの値を上書きし、各日付のタイムスタンプが最大になります。

foreach ($timestamps as $ts) { 
    $latest_times[date('Ymd', $ts)] = $ts; 
} 

あなたの配列は、これが機能するには、事前にソートする必要があります。あなたのように見えますが、そうでない場合はsort($timestamps);が最初です。このような

+0

日付をキーに使うのは天才だけです!ありがとう - 素晴らしい解決策。 – GePu

+0

ようこそ。 –

0

何かが短いと甘いです:もちろん

rsort($arrayFriday); 
$integerFriday = [$arrayFriday[0]]; 

foreach ($arrayFriday as $time) { 
    if(date('m.d.Y', end($integerFriday)) > date('m.d.Y', $time)){ 
     $integerFriday[] = $time; 
    } 
} 

、リストより大きく、長くこれは、あなたがそれをソートしていることから、かかります。それが常にソートされている場合は、array_reverse()でそれを逆転することができます。

出力:

Friday 17.03.2017 15:50 
Friday 10.03.2017 12:51 
Friday 06.01.2017 16:42 
関連する問題