加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

基于PHP中的时间间隔拆分数组

发布时间:2020-12-13 16:45:11 所属栏目:PHP教程 来源:网络整理
导读:我正在寻找一种基于数组中包含的时间间隔来拆分数组的方法.所以,例如, Array ( [0] = Array ( ['type'] = Text Format ['interval'] = 30 ['init'] = 2012-04-30 09:00:00 ['final'] = 2012-04-30 10:00:00 ) [1] = Array ( ['type'] = Word Format ['interv
我正在寻找一种基于数组中包含的时间间隔来拆分数组的方法.所以,例如,

Array (
   [0] => Array (
               ['type'] => Text Format
               ['interval'] => 30
               ['init'] => 2012-04-30 09:00:00
               ['final'] => 2012-04-30 10:00:00
           )
   [1] => Array (
               ['type'] => Word Format
               ['interval'] => 12
               ['init'] => 2012-04-28 13:00:00
               ['final'] => 2012-04-28 13:30:00
           )
)

将其拆分为:

Array (
   [0] => Array (
               ['type'] => Text Format
               ['interval'] => 30
               ['init'] => 2012-04-30 09:00:00
               ['final'] => 2012-04-30 09:30:00
           )
   [1] => Array (
               ['type'] => Text Format
               ['interval'] => 30
               ['init'] => 2012-04-30 09:30:00
               ['final'] => 2012-04-30 10:00:00
           )
   [2] => Array (
               ['type'] => Word Format
               ['interval'] => 12
               ['init'] => 2012-04-28 13:00:00
               ['final'] => 2012-04-28 13:12:00
           )
   [3] => Array (
               ['type'] => Word Format
               ['interval'] => 12
               ['init'] => 2012-04-28 13:12:00
               ['final'] => 2012-04-28 13:24:00
           )
)

这样做的好方法是什么?

解决方法

这可能对你有用……我只与最多20个区间进行比较

$dates = Array (
        0 => Array (
                'type' => "Text Format",'interval' => "30",'init' => "2012-04-30 09:00:00",'final' => "2012-04-30 10:00:00" 
        ),1 => Array (
                'type' => "Word Format",'interval' => 12,'init' => "2012-04-28 13:00:00",'final' => "2012-04-28 13:30:00" 
        ) 
);

echo "<pre>";

$output = array ();

foreach ( $dates as $key => $value ) {
    makeDates ( $value ['init'],$value ['final'],$value ['interval'],$value ['type'],$output);
}

var_dump ( $output );
function makeDates($start,$end,$min,$type,&$output) {
    $start = new DateTime ( $start );
    $end = new DateTime ( $end );

    $interval = new DateInterval ( 'PT' . $min . 'M' );

    for($i = 0; $i < 20; $i ++) {
        $list = array ();
        $list ['type'] = $type;
        $list ['interval'] = $min;
        $list ['init'] = $start->format ( 'Y-m-d H:i:s' );

        $start->add ( $interval );

        $list ['final'] = $start->format ( 'Y-m-d H:i:s' );

        if ($start == $end) {
            $output [] = $list;
        }

        if ($start >= $end) {
            break;
        }

        $output [] = $list;

    }

    return $output;
}

产量

array
  0 => 
    array
      'type' => string 'Text Format' (length=11)
      'interval' => string '30' (length=2)
      'init' => string '2012-04-30 09:00:00' (length=19)
      'final' => string '2012-04-30 09:30:00' (length=19)
  1 => 
    array
      'type' => string 'Text Format' (length=11)
      'interval' => string '30' (length=2)
      'init' => string '2012-04-30 09:30:00' (length=19)
      'final' => string '2012-04-30 10:00:00' (length=19)
  2 => 
    array
      'type' => string 'Word Format' (length=11)
      'interval' => int 12
      'init' => string '2012-04-28 13:00:00' (length=19)
      'final' => string '2012-04-28 13:12:00' (length=19)
  3 => 
    array
      'type' => string 'Word Format' (length=11)
      'interval' => int 12
      'init' => string '2012-04-28 13:12:00' (length=19)
      'final' => string '2012-04-28 13:24:00' (length=19)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读