如果日期已存在或具有重复的总和时间

时间:2013-10-07 09:40:16

标签: php arrays codeigniter isset array-key-exists

我有这个数组

$date = array{"2013-09-17 00:21:00",
              "2013-09-23 00:12:00",
              "2013-09-23 00:41:00",
              "2013-09-20 00:13:00",
              "2013-09-19 00:34:00",
              "2013-09-17 00:38:00"}

我正在尝试将数组中具有相同日期的时间相加。

这是我的预期输出:

 $date = array{"2013-09-17 00:59:00",
               "2013-09-23 00:53:00", 
               "2013-09-20 00:13:00",
               "2013-09-19 00:34:00"}

现在这是我到目前为止所尝试的

foreach($date as $key => $value)
        {
            $lf_date[] = date("Y-m-d",strtotime($value));
            $lf_time[] = date("H:i:s",strtotime($value));

            if(isset($lf_date[$key]))
            {
                 $output[] += $lf_time[$key]; 
            }
            else
            {
                 $output[] = $lf_time[$key]; 
            }

        }

这给了我0输出T_T ..我已经尝试在谷歌搜索它说我必须使用 isset array_key_exists 但我无法得到它上班。 :(。感谢任何能帮助我的人。

1 个答案:

答案 0 :(得分:1)

使用:

<?php
$date = array("2013-09-17 00:21:00",
              "2013-09-23 00:12:00",
              "2013-09-23 00:41:00",
              "2013-09-20 00:13:00",
              "2013-09-19 00:34:00",
              "2013-09-17 00:38:00");

$array = array();             
foreach($date as $key => $value)
{
    $lf_date = date("Y-m-d",strtotime($value));
    $lf_time = date("H:i:s",strtotime($value));

    $midnight = strtotime("0:00");

    if(!isset($array[$lf_date])) 
           $array[$lf_date] = 0;//check is array index exists

    $array[$lf_date] += strtotime($lf_time) - $midnight;
}

foreach($array as $key => $value)
{
    $midnight = strtotime("0:00");
    $array[$key] = $key." ".date("G:i:s", $midnight + $value);
}

$result = array_values($array);

print_r($result);

?>

输出:

Array
(
    [0] => 2013-09-17 0:59:00
    [1] => 2013-09-23 0:53:00
    [2] => 2013-09-20 0:13:00
    [3] => 2013-09-19 0:34:00
)