2013-05-29 2 views
-1

Я пытаюсь использовать функцию даты, которую я нашел в SO, чтобы создать массив дат из двух заданных дат. Он выглядит так:PHP отображает возвращаемые значения массива с помощью print_r

function createDateRangeArray($strDateFrom,$strDateTo) { 
    // takes two dates formatted as YYYY-MM-DD and creates an 
    // inclusive array of the dates between the from and to dates. 

    // could test validity of dates here but I'm already doing 
    // that in the main script 

    $aryRange=array(); 

    $iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2),  substr($strDateFrom,8,2),substr($strDateFrom,0,4)); 
    $iDateTo=mktime(1,0,0,substr($strDateTo,5,2),  substr($strDateTo,8,2),substr($strDateTo,0,4)); 

    if ($iDateTo>=$iDateFrom) { 
    array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry 

    while ($iDateFrom<$iDateTo) { 
     $iDateFrom+=86400; // add 24 hours 
     array_push($aryRange,date('Y-m-d',$iDateFrom)); 
    } 
    } 
    return $aryRange; 
} 
$print_r($aryRange); 

По какой-то причине он не будет печатать массив. Я знаю, что мои значения $strDateFrom и $strDateTo хороши, поскольку я могу повторить их до и после функции. Любая помощь высоко ценится!

+1

Потому что у вас нет $ aryRange определена. Это локальная переменная внутри функции, которая никогда не вызывается. print_r (createDateRangeArray ($ strDateFrom, $ strDateTo)) – sashkello

+0

Вы делаете это неправильно ... '$ print_r ($ aryRange);' должно быть 'print_r (createDateRangeArray ('ваша дата начала', 'ваша дата окончания')) ; ' –

ответ

1

Вы никогда не назначаете $aryRange на что угодно. Переменная с этим именем внутри функции является локальной и не такой, как в инструкции print. Вы никогда не вызываете функцию, поэтому никогда не получите от нее значения.

Попробуйте это:

$strDateFrom = '2013-01-01'; 
$strDateTo = '2013-01-11'; 
$aryRange = createDateRangeArray($strDateFrom,$strDateTo); 
print_r($aryRange); 
Смежные вопросы