在PHP中从二维数组创建日期数组

3

我有一个像这样的数组:

 $my_array=array(array('month'=> 3,
                       'day'=> 4,
                       'hour' => 1,
                       'minut' => 15,
                       'year'=> 2014),
                    array('month'=> 5,
                       'day'=> 7,
                       'hour' => 1,
                       'minut' => 50,
                       'year'=> 2012)
                       ----------
                        );

我想从这个数组中创建一个新的数组,如下所示:
$new_array=array('2014-3-4 1:15','2012-5-7 1:50');

我知道可以通过循环遍历每个元素来实现,但是否有更简单的方法?因为我的数组包含大量数据(超过50000)。

3个回答

2

尝试使用array_map来实现类似以下的功能:

$newArr = array_map(function($d) {
    return $d['year'] . '-' . $d['month'] . '-' . $d['day'] . ' ' . $d['hour'] . ':' . $d['minut'];
}, $my_array);

1
当然可以:
foreach($my_array as $k => $v) {
    $new_array[i] = $v["year"]."-".$v["month"]."-".$v["day"]." ".$v["hour"].$v["minut"];
    i++;
}

//未经测试


1
我知道这个方法。但是我的数组太大了,在foreach之前会超时。 - Shijin TR
应该使用http://de1.php.net/set_time_limit。不要忘记给用户反馈,脚本仍在工作。 - Realitätsverlust

1
你可以使用array_map(),但请注意:这将在内部使用循环。
$result = array_map(function($x)
{
   return $x['year'].'-'
         .$x['month'].'-'
         .$x['day'].' '
         .$x['hour'].':'
         .$x['minut'];
}, $my_array);

因此,这不会增加整体性能。它也不会检查您的日期。我建议使用mktime()date(),这样您就可以得到任何日期格式的结果。或者可能使用checkdate()来检查元素是否包含有效日期(顺便说一下,这些函数的良好替代方案是DateTime API)。
普通连接的唯一好处是它会稍微快一点(因为在使用日期函数的情况下,显然会有开销)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接