Double在PHP中展开包含日期和时间的文本字段

时间:2014-03-16 06:44:14

标签: php

我有一个冗长的文本字段,其中包含以逗号分隔的多个日期和时间。以下是示例

2013-08-26 10:00:00,2013-08-26 15:00:00,2013-08-26 20:00:00
2013-08-27 01:00:00,2013-08-27 06:00:00,2013-08-27 11:00:00
2013-08-27 16:00:00,2013-08-27 21:00:00,2013-08-28 02:00:00
2013-08-28 07:00:00,2013-08-28 12:00:00,2013-08-28 17:00:00

从上面的例子我需要以下结构

步骤1:将逗号分隔值拆分为一个数组。 第2步:从上面获得的阵列推送所有2013-08-26日期到一个阵列,2013-08-27到另一个阵列再到2013-08-28。

我成功地将主文本分解为一个数组,但没有成功获取某个特定日期的值列表。

3 个答案:

答案 0 :(得分:1)

foreach (explode(PHP_EOL, $dates) as $line)
{
    foreach (explode(',', $line) as $dt)
    {
        $dateVal = date('Y-m-d', strtotime($dt));

        switch ($dateVal)
        {
            case '2013-08-26':
                $arr1[] = $dt;
                break;
            case '2013-08-27':
                $arr2[] = $dt;
                break;
            case '2013-08-28':
                $arr3[] = $dt;
                break;
        }
    }
}

Online demo

答案 1 :(得分:0)

$dates = "2013-08-26 10:00:00,2013-08-26 15:00:00,2013-08-26 20:00:00
2013-08-27 01:00:00,2013-08-27 06:00:00,2013-08-27 11:00:00
2013-08-27 16:00:00,2013-08-27 21:00:00,2013-08-28 02:00:00
2013-08-28 07:00:00,2013-08-28 12:00:00,2013-08-28 17:00:00";

$dates = explode("\n", $dates);

foreach($dates as $date) {
   $date = explode(",", $date);
   var_dump($date); 
   // i.e. with $date[1] I will get the middle date of particular line.
}
在foreach中的

$date,你可以看到变成一个数组(爆炸后),其中包含一行中用逗号分隔的所有日期。

答案 2 :(得分:0)

自从我上次使用PHP以来已经有一段时间了,但这是我生锈的解决方案:

$map = array();
$records = explode(',', $input);
foreach( $records as $record )
{
    $a = explode(" ", $record);

    if(!array_key_exists( $a[0], $map ))
        $map[$a[0]] = array();

    $map[$a[0]][] = $a[1];
}
var_dump($map);

我还没有测试过,抱歉。但它可能会奏效......

它应该给你类似的东西:

array(2)
(
    ['2014-03-14'] => array(2)
    (
        [0] => '04:03:24'
        [1] => '04:03:25'
    ) 
    ['2014-03-14'] => array(2)
    (
        [0] => '04:03:24'
        [1] => '04:03:25'
    ) 
)