2012-05-15 51 views
-3

我有一组日期:from和to。 即:将日期数组转换为日期范围

array(
    [0] => array('from' => '19-01-2000' 'to' => '20-01-2000') 
    [1] => array('from' => '20-01-2000' 'to' => '21-01-2000') 
    [2] => array('from' => '21-01-2000' 'to' => '22-01-2000') 
    [3] => array('from' => '23-01-2000' 'to' => '24-01-2000') 
    [4] => array('from' => '24-01-2000' 'to' => '25-01-2000') 
) 

我试图找到一种方法来转换创建一个新的数组,只需将日期范围, 即:

array(
    [0] => array('from' => '19-01-2000' 'to' => '22-01-2000') 
    [1] => array('from' => '23-01-2000' 'to' => '25-01-2000') 
) 

有什么建议?

+0

对不起,但输出数组是如何精确计算的? – Songo

+0

作为日期范围从输入数组。 :-) – gmaliar

+0

是的,我得到这部分:D但我没有看到他们之间的关系?例如, – Songo

回答

1

我用下面的方法解决了它。

$new_array = array(); 
    $j = 0; 
    $i = 0; 
    $flag = true; 
    $range = false; 
    while ($flag) { 
     if ($array[$j+1] == null) { 
      $flag = false; 
     } 
     if ($array[$j]['date_to'] == $array[$j+1]['date_from']) { 
      if (!$range) { 
       $new_array[$i] = $array[$j]; 
       $j++; 
       $range = true; 
      } 
      else { 
       $j++; 
      } 
     } 
     else { 
      if (!$range) { 
       $new_array[$i] = $array[$j]; 
      } 
      else { 
       $new_array[$i]['date_to'] = $array[$j]['date_to']; 
       $range = false; 
      } 
      $i++; 
      $j++; 
     } 
    } 

$ new_array现在只包含日期范围。