【问题标题】:Create date array from two dimensional array in PHP从 PHP 中的二维数组创建日期数组
【发布时间】:2014-03-04 07:02:32
【问题描述】:

我有一个类似的数组,

 $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)的数据。

【问题讨论】:

    标签: php arrays date


    【解决方案1】:

    使用array_map 尝试这样的事情:

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

    【讨论】:

      【解决方案2】:

      这是可能的:

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

      //未测试

      【讨论】:

      • 这个方法我知道。但是我的数组太大了。在foreach之前会超时
      • de1.php.net/set_time_limit 应该这样做。不要忘记向用户反馈脚本仍在运行。
      【解决方案3】:

      您可以使用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)

      普通连接的唯一好处是它会更快一些(因为在使用日期函数的情况下,显然会有开销)。

      【讨论】:

        猜你喜欢
        • 2016-12-27
        • 1970-01-01
        • 2017-01-07
        • 2019-12-04
        • 1970-01-01
        • 2023-01-04
        • 2023-03-18
        • 1970-01-01
        相关资源
        最近更新 更多