我有一个冗长的文本字段,其中包含多个以逗号分隔的日期和时间。下面是示例
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日期推入另一个数组。
我成功地将主文本分解为一个数组,但没有成功地获得一个特定日期的值列表。
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;
}
}
}
<<p> 在线演示/strong> $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
,正如您所看到的,变成了一个数组(在展开后),其中包含一行中以逗号分隔的所有日期。
距离我上次使用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'
)
)