2011-09-22 7 views
0

지난 주 첫날과 마지막 날을 가져와야합니다. 아래 코드를 사용하면 루프 밖에서 변수를 읽으려고 시도 할 때까지 잘 작동합니다.FOR 루프 외부에서 변수를 사용할 수 없습니다.

<?php 
$current_week = date(W); 
$previous_week = $current_week - 1; 
$year = date(o); 
for($day=1; $day<=7; $day++) { 
    $temp = array ($day => date('Y-m-d', strtotime($year."W".$previous_week.$day)) . ' 00:00:00'); 
    $firstday = $temp[1]; 
    // echo here works fine 
    echo $firstday; 
} 

// echo here doesnt work anymore 
echo $firstday; 
?> 

나는 이것이 실제로 작동하지 않는 이유를 알지 못합니다. 나는 PHP 문서를 통해 읽었으며 모든 것이 작동해야한다고 말한다. 나는 전혀 위즐이 아니며 지금은 정말 혼란 스럽다. 아무도 이것에 약간의 빛을 비출 수 있습니까?

미리 감사드립니다.

답변

0
$ firstDay 재사용 및 덮어 쓰는

:

<?php 
$current_week = date(W); 
$previous_week = $current_week - 1; 
$year = date(o); 
for($day=1; $day<=7; $day++) { 
    $temp = array ($day => date('Y-m-d', strtotime($year."W".$previous_week.$day)) . ' 00:00:00'); 
    $firstday = $temp[1]; 
    // echo here works fine 
    echo "Inloop - ".$firstday."\n"; 
} 

// echo here doesnt work anymore 
echo "After loop - ".$firstday."\n"; 
?> 

Results: 
Inloop - 2011-09-12 00:00:00 
Inloop - 
Inloop - 
Inloop - 
Inloop - 
Inloop - 
Inloop - 
After loop - 

희망이

+0

감사! 이 문제를 해결하는 데 도움이 :) –

0

루프의 반복을 수행 할 때 $firstday 변수가 덮어 쓰여지고 있으므로 결국에는 null이 포함됩니다.

학습 때 당신은 오류보고에 항상 차례 개발해야 $temp[1]

에 액세스 할 때의주의 사항은 $i > 1과 반복에서 생성 볼 수 있습니다 오류보고를 켜고 경우, 당신은해야 (또는 더 나은 코드를 공개하기 전에 모든 경고를 해결해야합니다.

여기 E_ALLerror_reporting 세트 스크립트의 경고입니다

> php /tmp/foo.php 2>&1 | grep Notice 
PHP Notice: Use of undefined constant W - assumed 'W' in /private/tmp/foo.php on line 3 
Notice: Use of undefined constant W - assumed 'W' in /private/tmp/foo.php on line 3 
PHP Notice: Use of undefined constant o - assumed 'o' in /private/tmp/foo.php on line 5 
Notice: Use of undefined constant o - assumed 'o' in /private/tmp/foo.php on line 5 
2011-09-12 00:00:00PHP Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
PHP Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
PHP Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
PHP Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
PHP Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
PHP Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
Notice: Undefined offset: 1 in /private/tmp/foo.php on line 8 
+0

감사합니다 도움이! 이것은 내가 문제를 해결하는 데 도움이되었습니다. –

+0

@SjaakdeVries는 답안에 대한 제 업데이트를보고 오류를 알기 위해 제 제안을 적용합니다. – Fabio

관련 문제