如何通过比较两个数组找到最近的时间戳

时间:2013-08-19 10:40:23

标签: php datetime

我有两个数组,可以说$data['Occur']$data['Reset']

$data['Occur']是一个由某些事件发生的时间戳和

组成的数组

$data['Reset']是一个由重置同一事件的时间戳组成的数组

我要做的是找到事件发生的相应重置时间戳。

例如:

如果事件发生在“ 2013-10-01 00:50:27 ”并且它在数组 $ data ['Occur'] 中,那么 重置该事件的时间戳将只是更大的时间戳 2013-10-01 00:53:27

我必须维护一个如下所示的数组:

$ array [0] ['occurrence'] ='2013-10-01 00:50:27';

$ array [0] ['reset'] ='2013-10-01 00:53:27';(各自重置时间戳2013-10-01 00:50:27)

$ array [1] ['occurrence'] ='2013-10-01 00:55:11';

$ array [1] ['reset'] ='2013-10-01 00:57:17';(各自重置时间戳2013-10-01 00:55:11)

根据'发生'时间戳,我必须为每个时间戳找到更大的'重置'时间戳 $ data ['Occur']数组的时间戳值。

$ data ['Occur']数组将如下所示:

[Occur] => Array
        (
            [0] => Array
                (
                    [Occur_Date_Time] => 2013-10-01 00:50:27
                )

            [1] => Array
                (
                    [Occur_Date_Time] => 2013-09-01 00:52:01
                )

            [2] => Array
                (
                    [Occur_Date_Time] => 2013-08-01 00:07:48
                )

            [3] => Array
                (
                    [Occur_Date_Time] => 2013-07-01 00:06:59
                )

            [4] => Array
                (
                    [Occur_Date_Time] => 2013-06-18 10:04:16
                )

            [5] => Array
                (
                    [Occur_Date_Time] => 2013-06-17 11:40:50
                )
       )

**and** 

[reset] => Array
        (
            [0] => Array
                (
                    [reset_Date_Time] => 2014-04-01 00:03:34
                )

            [1] => Array
                (
                    [reset_Date_Time] => 2013-09-01 01:09:21
                )

            [2] => Array
                (
                    [reset_Date_Time] => 2013-09-01 00:00:34
                )

            [3] => Array
                (
                    [reset_Date_Time] => 2013-07-01 00:16:14
                )

            [4] => Array
                (
                    [reset_Date_Time] => 2013-06-18 11:05:28
                )

            [5] => Array
                (
                    [reset_Date_Time] => 2013-06-17 12:56:58
                )
       )

上面的数组可能会有随机时间戳,所以我不能顺序匹配它们。 我必须匹配所有事件发生和重置时间戳。我怎么能得到这个?

1 个答案:

答案 0 :(得分:0)

function findResetMate($e,$k, $reset) {
    $gap = 10E50+1;
    if ($reset < $e) return false;
    if (($reset - $e) < $gap) {
        $gap = ($reset - $e);
        $mate = $reset;
    }
    echo "EVENT : " . date("M d, Y H:i:s",$e) . " -->RESET<-- " . date("M d, Y H:i:s",$reset) . "<br />\n";
    return true;
}
foreach($data['Reset'] as $r) {
    array_walk($data['Occur'], "findResetMate", $r);
}