-1

我想创建一个函数来传递一年中的几周的值和那一周的开始日期。我只在将 print_r($week_array) 放入 while 循环(这没用)时才获得输出,我需要能够在循环之外获取数组。我看不到这里发生了什么......谢谢。

function GetWeeks(){
    $year = date('Y');
    $firstDayOfYear = mktime(0, 0, 0, 1, 1, $year);
    $firstthursday = strtotime('thursday', $firstDayOfYear);
    $firstMonday = strtotime('-3 days', $firstthursday);
    $nextMonday = strtotime('monday', $firstDayOfYear);
    $nextSunday = strtotime('sunday', $firstMonday);
    $weeknumber = "1";
    $week_array = '';

    while (date('Y', $nextMonday) == $year) {
        if ($weeknumber == 53) { 
            exit; 
        }

        if ($weeknumber == 1) {
            $fromdate = date('Y-m-d', $firstMonday);
            $todate   = date('Y-m-d', $nextSunday);
            $week_array[] = array($weeknumber => $fromdate);
            date('Y-m-d', $firstMonday);
            date('Y-m-d', $nextSunday);
            $weeknumber = $weeknumber + 1;
        }

        $nextSunday = strtotime('sunday', $nextMonday);
        $fromdate = date('Y-m-d', $nextMonday);
        $todate = date('Y-m-d', $nextSunday);
        $nextMonday = strtotime('+1 week', $nextMonday);
        $nextSunday = strtotime('+1 week', $nextSunday);
        #array_push($array, $fromdate);
        $week_array[] = array($weeknumber => $fromdate);
        $weeknumber = $weeknumber + 1;
        print_r($week_array); // Print the array values for each loop.
    }

    print_r($week_array); -> Does not work at all (dont print anything)

    return array($week_array);

}
4

3 回答 3

1

将此行更改if ($weeknumber == 53) { exit; }if ($weeknumber == 53) { break; }

于 2013-09-26T13:12:11.637 回答
1

首先声明正确的数组:

$week_array = array();

尝试后:

$arr =  array($weeknumber => $fromdate);
array_push($week_array, $arr);

而不是这个:

$week_array[] = array($weeknumber => $fromdate);
于 2013-09-26T13:03:24.380 回答
0

您正在退出 While 循环。检查这个

看到这个if ($weeknumber == 53) { exit}

<?php
function GetWeeks(){
    $year           = date('Y');
$firstDayOfYear = mktime(0, 0, 0, 1, 1, $year);
$firstthursday  = strtotime('thursday', $firstDayOfYear);
$firstMonday    = strtotime('-3 days', $firstthursday);
$nextMonday     = strtotime('monday', $firstDayOfYear);
$nextSunday     = strtotime('sunday', $firstMonday);

$weeknumber = "1";
//$week_array = '';
$week_array = array();
while (date('Y', $nextMonday) == $year) 
{

    if ($weeknumber == 1){
        $fromdate = date('Y-m-d', $firstMonday);
        $todate   = date('Y-m-d', $nextSunday);
        $week_array[] = array($weeknumber => $fromdate);
        date('Y-m-d', $firstMonday);
        date('Y-m-d', $nextSunday);
        $weeknumber = $weeknumber + 1;
    }
    $nextSunday     = strtotime('sunday', $nextMonday);
    $fromdate = date('Y-m-d', $nextMonday);
    $todate   = date('Y-m-d', $nextSunday);
    $nextMonday = strtotime('+1 week', $nextMonday);
    $nextSunday = strtotime('+1 week', $nextSunday);
    #array_push($array, $fromdate);

    $week_array[] = array($weeknumber => $fromdate);
    $weeknumber = $weeknumber + 1;

    if ($weeknumber == 53) {
    echo "<pre>";
    print_r($week_array);
    exit; 
    }
            //print_r($week_array);
             //-> Print the array values for each loop.
}
 //-> Does not work at all (dont print anything)
exit;
return array($week_array);

}
GetWeeks();
?>
于 2013-09-26T13:10:30.993 回答