2013-04-23 3 views
0

Может ли кто-нибудь помочь мне в сохранении начальной и конечной даты от функции до массива для дальнейшей обработки.Сохранение значений начальной и конечной даты от функции до массива

Ниже кода php даются начальные и конечные даты каждого месяца за определенный период. Но я не могу поместить эти значения в массив из функции.

PHP код:

<?php 
    //Function to return out start and end dates of all months in a date range given 

    function rent_range($start_date, $end_date) 
    { 
     $start_date = date("m/d/Y", strtotime($start_date)); 
     $end_date = date("m/d/Y", strtotime($end_date)); 
     $start = strtotime($start_date); 
     $end = strtotime($end_date); 

     $month = $start; 
     $months[] = date('Y-m', $start); 
     while($month < $end) { 
      $month = strtotime("+1 month", $month); 
      $months[] = date('Y-m', $month); 
     } 

     foreach($months as $mon) 
     { 
      $mon_arr = explode("-", $mon); 
      $y = $mon_arr[0]; 
      $m = $mon_arr[1]; 
      $start_dates_arr[] = date("m/d/Y", strtotime($m.'/01/'.$y.' 00:00:00')); 
      $end_dates_arr[] = date("m/d/Y", strtotime('-1 minute', strtotime('+1 month',strtotime($m.'/01/'.$y.' 00:00:00')))); 
     } 

     //to remove first month in start date and add our start date as first date 
     array_shift($start_dates_arr); 
     array_pop($start_dates_arr); 
     array_unshift($start_dates_arr, $start_date); 

     //To remove last month in end date and add our end date as last date 
     array_pop($end_dates_arr); 
     array_pop($end_dates_arr); 
     array_push($end_dates_arr, $end_date); 

     $result['start_dates'] = $start_dates_arr; 
     $result['end_dates'] = $end_dates_arr; 
     return $result; 
    } 

    $start_date = '2013-04-01'; 
    $end_date = '2014-03-31'; 
    $res = rent_range($start_date, $end_date); 
    echo "<pre>"; 
    print_r($res); 
    echo "</pre>"; 

    for($i=0; $i<11; $i++) 
    { 
    echo $res[$i]."<br>"; 
    } 
    ?> 

мне нужен выход функции выше, чтобы быть в массиве, как это: Желаемая выход:

$res[0]='04/01/2013' 
    $res[1]='05/01/2013' 
    - 
    - 
    - 
    - 
    - 
    - 
    $res[11]='03/01/2014' 

    $res[12]='04/30/2013' 
    $res[13]='05/31/2013' 
    - 
    - 
    - 
    - 
    $res[24]='03/31/2014' 
+0

[** не воспроизводимые **] (http://codepad.viper-7.com/k1w1tL) – Rikesh

+0

@Rikesh Этот скрипт печатает даты начала и окончания каждого месяца для заданного период. Но я не могу хранить эти даты в массиве. –

+0

Можете ли вы показать нам свое желание? – Rikesh

ответ

0

Из вашего комментария, который вы хотите, необходимо объединить оба массива,

$new_res = array_merge($res['start_dates'],$res['end_dates']); 
print_r($new_res); 

Demo.

+0

После добавления указанных строк, как мне получить доступ к значениям, хранящимся в массиве, используя цикл for. –

+0

@sridhars вы можете просто использовать цикл foreach. – Rikesh

+0

Спасибо, что сработали! –

1

Пожалуйста, используйте ниже сценариев в функции

$result = array_merge($start_dates_arr, $end_dates_arr); 
//$result['start_dates'][] = $end_dates_arr; 
return $result; 
+0

Спасибо, kapil, даже это прекрасно работает. –

+0

welcome sridhar – kapil

Смежные вопросы