在PHP中双重分解包含日期和时间的文本字段
我有一个很长的文本字段,包含多个日期和时间,以逗号分隔。下面是一个例子在PHP中双重分解包含日期和时间的文本字段,php,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:
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
我成功地将主文本分解为一个数组,但没有成功获得某个特定日期的值列表
$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.
}
$date
在foreach内部,正如您所看到的,它变成了一个数组(分解后),包含所有日期,并在一行中用逗号分隔
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;
}
}
}
我上次使用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'
)
)