2011-01-20 5 views
0

누군가 내가 가지고있는 문제에 도움이 될지 궁금합니다.php datetime 클래스와 for 루프 문제

나는 사람들이 연락하기를 원하는 평일을 포함하는 배열을 가지고 있습니다. 그런 다음 for 루프를 작성하여 현재 날짜에 1 일을 추가하고 요일과 사람이 연락하기를 원하는 날과 일치시킵니다.

내가 겪고있는 문제는 루프가 항상 너무 먼 거리에 있다는 것입니다. 나는 이것이 내가하는 일을 성취하는 가장 좋은 방법인지 또는 더 좋은 방법이 있는지 궁금해하고있다. 여기

내 코드입니다 :

$ScheduleWindow = array('Monday', 'Tuesday'); 

$date = new DateTime('today'); 

$dow = getdate($date->getTimestamp()); 

for($date, $dow;!in_array($dow['weekday'], $ScheduleWindow);$date->add(new DateInterval('P1D'))){ 
$dow = getdate($date->getTimestamp()); 
} 

echo "Next date to contact is" . $date->format('Y-m-d H:i:s') . "\n"; 

코드는 현재 그러나 나는 그것이 일해야 "is2011-01-25 0시 0분 0초 일정 창에서 다음 날짜를 '에코 2011-01-24 .

감사합니다.

답변

1

귀하의 for 루프 단어로 표현이 작업을 수행합니다 : 당신은 다음 루프에서 유엔 증가 날짜에 대해 확인하고

If the weekday in $dow is not within schedule window, 
assign the current date to $dow, 
increase the date, 
repeat. 

.

루프 또한 너무 복잡합니다. 이것은 잘 수행해야합니다

while (!in_array($dow['weekday'], $ScheduleWindow)) { 
    $date->add(new DateInterval('P1D')); 
    $dow = getdate($date->getTimestamp()); 
} 

귀하의 DateTime 객체, getdate, DateInterval 작업이 훨씬 더 복잡 그것이 필요 이상 :

$scheduleWindow = array('Monday', 'Tuesday'); 

$date = new DateTime('today'); 
while (!in_array($date->format('l'), $scheduleWindow)) { 
    $date->add(new DateInterval('P1D')); 
} 

echo "Next date to contact is " . $date->format('Y-m-d H:i:s'); 
+0

내 질문에 대한 자세한 답변과 정확하게 내가 뭘 잘못했는지 설명해 주셔서 감사합니다. 코드가 정확히 지금하고있는 일을 수행합니다. :) –

1

루프 날짜를 적용하면 따라 날짜를 증가시켜야 너의 상태에. 따라서 방법이 있습니다 :

$date = date ("Y-m-d", strtotime ("+1 day", strtotime($date))); 

자세한 코드는 http://urfusion.blogspot.com을 참조하십시오.