2014-01-19 7 views
0

작은 예약 시스템을 만들고 있습니다. 행은 현재 주 열로 특정 시간으로 설정됩니다.foreach 루프 내에서 if 문

내가하려는 것은 요일 이름을 특정 색으로 변경하는 것입니다. 과거의 파랑, 녹색의 현재 날짜. 아무 래도 if 문장은 아무 것도하지 않습니다. 누구든지 설명하거나 올바른 방향으로 나를 가리킬 수 있을까요?

$today = time(); 

$lastWeek = []; 
$lastWeek[0] = date('D',strtotime('last monday')); 
$lastWeek[1] = date('D',strtotime('last monday +1day')); 
$lastWeek[2] = date('D',strtotime('last monday +2day')); 
$lastWeek[3] = date('D',strtotime('last monday +3day')); 
$lastWeek[4] = date('D',strtotime('last monday +4day')); 

$timeSlot = []; 
$timeSlot [0] = date('H:i', strtotime('9:00'))  ."-9:30"; 
$timeSlot [1] = date('H:i', strtotime('9:30'))  ."-10:00"; 
$timeSlot [2] = date('H:i', strtotime('10:00'))  ."-10:30"; 
$timeSlot [3] = date('H:i', strtotime('10:30'))  ."-11:00"; 
$timeSlot [4] = date('H:i', strtotime('11:00'))  ."-11:30"; 
$timeSlot [5] = date('H:i', strtotime('11:30'))  ."-12:00"; 

echo "<html><head><title>Doctor Booking timetable</title></head>"; 
echo "<body><table id=myTable border=2 align=center >"; 

echo "<tr><td>Week Commencing</td>"; 

foreach ($timeSlot as $time) 
{ 
    echo"<td>"; 
    echo $time; 
    echo"</td>"; 
} 
echo "</tr>"; 

foreach ($lastWeek as $day) 
{ 
    echo "<tr><td>"; 
    echo $day; 
    echo "</td></tr>"; 
} 

if ($lastWeek < $today){ 
    echo "<font color='blue'></font>"; 
}else { 
    echo "<font color='green'></font>"; 
} 
+6

은'if' 문은하지 *은'foreach' 루프 내부. – Boaz

+0

일부 HTML 자습서도 찾아야합니다. html이 유효하지 않습니다. '$ lastWeek'는 배열로서 실제로는 평가되지 않습니다. –

+0

foreach 루프 내부의 if 문 구문은 무엇입니까? 많은 오류가 발생했습니다. 감사. – user3204192

답변

2

당신은 (게시물 제목이 암시 같은) foreach 내부 if 문을 넣어 또한 컬러 태그 내부 $day을 포장해야합니다. 참고로 font 태그는 오랫동안 사용되지 않았으며 대신 span을 사용해야합니다.

질문에서 $lastWeek$today과 같습니다. $lastWeek은 반복 할 배열입니다.

foreach ($lastWeek as $day) 
{ 
    echo "<tr><td>"; 
    $color = ($day < $today) ? 'blue' : 'green'; 
    echo '<span style="color: ' . $color . '">' . $day . '</span>'; 
    echo "</td></tr>"; 
} 

PS : 나는 당신의 if 문에 대한 여기에 ternary operator를 사용했습니다 당신이$today에 있음을 를 비교해야한다 귀하의 foreach에 따라, 현재 반복은 $day 변수에 포함됩니다.

if($day < $today) 
    $color = 'blue'; 
else 
    $color = 'green'; 

...하지만 짧은

PPS : 그것은 쓰기와 같은 것입니다. 여기에 귀하의 날짜가 GT/LT 운영자를 사용하여 비교할 올바른 형식임을 가정합니다. 그렇지 않은 경우 date function과 같은 형식으로 형식을 지정해야합니다.

+0

OP는 또한 배열 요소 '$ day' 대신에'$ today'라는 현재 타임 스탬프를'$ lastWeek' 배열과 비교합니다. 당신은이 감독을 정정 한 것처럼 보였을 지 모르지만 그 또한 구체적으로 설명해야합니다. – Boaz

+1

@Boaz가 참조 용으로 추가되었습니다 - 건배 –

+0

내 문제가 정렬 된 도움을 주셔서 감사합니다. 또한 날짜에 대해 말씀 드린 것을 기억합니다. – user3204192

0

대단히 필요한 경우가 아니면 deprecated 태그를 사용하지 않을 것입니다. 코드 스타일을 사용 http://www.w3schools.com/tags/tag_font.asp

이것에 대해 참조 : *

$today = time(); 

$lastWeek = array(); 
$lastWeek[0] = date('D',strtotime('last monday')); 
$lastWeek[1] = date('D',strtotime('last monday +1day')); 
$lastWeek[2] = date('D',strtotime('last monday +2day')); 
$lastWeek[3] = date('D',strtotime('last monday +3day')); 
$lastWeek[4] = date('D',strtotime('last monday +4day')); 

$timeSlot = array(); 
$timeSlot [0] = date('H:i', strtotime('9:00'))  ."-9:30"; 
$timeSlot [1] = date('H:i', strtotime('9:30'))  ."-10:00"; 
$timeSlot [2] = date('H:i', strtotime('10:00'))  ."-10:30"; 
$timeSlot [3] = date('H:i', strtotime('10:30'))  ."-11:00"; 
$timeSlot [4] = date('H:i', strtotime('11:00'))  ."-11:30"; 
$timeSlot [5] = date('H:i', strtotime('11:30'))  ."-12:00"; 

echo "<html><head><title>Doctor Booking timetable</title></head>"; 
echo "<body><table id=myTable border=2 align=center >"; 

echo "<tr><td>Week Commencing</td>"; 

foreach ($timeSlot as $time) 
{ 
    echo"<td>"; 
    echo $time; 
    echo"</td>"; 
} 
echo "</tr>"; 

foreach ($lastWeek as $day) 
{ 
    echo "<tr><td>"; 
    if ($lastWeek < $today){ 
     echo "<font color='blue'>$day</font>"; 
    }else { 
     echo "<font color='green'>$day</font>"; 
    } 
    echo "</td></tr>"; 
}