我有一个像
这样的数组 $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 )。
答案 0 :(得分:2)
使用array_map尝试这样的事情:
$newArr = array_map(function($d) {
return $d['year'] . '-' . $d['month'] . '-' . $d['day'] . ' ' . $d['hour'] . ':' . $d['minut'];
}, $my_array);
答案 1 :(得分:1)
Ofc可能:
foreach($my_array as $k => $v) {
$new_array[i] = $v["year"]."-".$v["month"]."-".$v["day"]." ".$v["hour"].$v["minut"];
i++;
}
//未测试
答案 2 :(得分: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)
关于简单连接的唯一好处是会更快一些(因为在使用日期函数的情况下,显然会有开销)。