2012-05-15 6 views
-3

J'ai un tableau de dates: de et à. i.e.:Convertir un tableau de dates en une plage de dates

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') 
) 

Je suis en train de trouver un moyen de convertir créer un nouveau tableau qui seulement les plages de dates, i.e.:

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

Toutes les suggestions?

+0

Désolé, mais comment le tableau de sortie est-il calculé exactement? – Songo

+0

comme la plage de dates du tableau d'entrée. :-) – gmaliar

+0

oui, je reçois cette partie: D Mais je ne vois pas la relation entre eux ?! – Songo

Répondre

1

Je l'ai résolu de la façon suivante.

$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 ne contient plus que les plages de dates.