php: Mümkün ardışık çiftler 'için' den 'sayıların dizi dönüştürmek ve?

2 Cevap
  • Ben bir tatil evi rezervasyonu olduğunda günlerde atıfta damgalarının bir dizi var.
  • Her zaman damgası yuvarlak gün.
  • Ben bir 'başlar' dizisi ve ardışık tarihler için 'sonuç "çifti içine bu açmak istiyorum

Ben bu işlevi yazma için farkında olmalıdır herhangi bir php fonksiyonları var mı?

Ya da herkes bu tür bir şey için herhangi bir işaretçiler var mı?

teşekkürler!

edit:

örnek, dizi:

Array
(
    [0] => 1273536000
    [1] => 1273622400
    [2] => 1273708800
    [3] => 1273795200
    [4] => 1273881600
    [5] => 1273968000
    [6] => 1274054400
    [7] => 1274140800
    [8] => 1274227200
)

burada bir gün = 86400 (saniye)

2 Cevap

Süper güzel değil, ama bu ne istediğiniz olduğunu düşünüyorum:

<?

$d[0] = 1273536000;
$d[1] = 1273622400;
$d[2] = 1273708800;
$d[3] = 1273795200;
$d[4] = 1273881600;
$d[5] = 1273968000;
$d[6] = 1274054400;
$d[7] = 1274140800;
$d[8] = 1274227200;
$d[9] = $d[8] + (60*60*24*4); // 4 days later
$d[10] = $d[9] + (60*60*24); // 1 day after that

$start = 0;
$dates = array();
foreach( $d as $key => $date )
{

// set the start date
if( $start == 0 )
   $start = $date;

else
{
   // set the end date
   if( $date - $d[$key-1] > (60*60*24) || $key == count( $d ) -1 )
   {
      if( $key == count( $d ) -1 )
        $end = $date;
      else      
        $end = $d[$key-1];

      $span['start'] = $start;
      $span['end'] = $end;

      array_push( $dates, $span );

      $start = $date;
    } // if
 } // else
} // foreach

?>

# Results
# Array
# (
#     [0] => Array
#         (
#             [start] => 1273536000 // May 10, 2010
#             [end] => 1274227200 // May 18, 2010
#         )
# 
#     [1] => Array
#         (
#             [start] => 1274572800  // May 22, 2010
#             [end] => 1274659200 //May 23, 2010
#         )
# 
# )