2014-01-19 83 views
0

我正在创建我的小预订系统,并且正在尝试将日期设置为当前星期。 有人可以解释为什么下面的代码不工作?通过索引数组循环

$lastWeek = []; 
$arrlength=count($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')); 

echo "<html><head><title>Event Booking timetable</title></head>"; 
echo "<body><table id=myTable border=2>"; 
echo "<tr><td>Week Commencing</td>"; 

for ($x=0; $x<$arrlength; $x++) 
{ 
echo "<td>"; 
echo $lastWeek[$x]; 
echo "</td></tr>"; 
} 
+0

您正在设置'$ arrlength'在填充数组之前。不要在PHP中使用增量式'for'循环,除非在最奇特的情况下。 [大部分时间使用'foreach'](http://us2.php.net/manual/en/control-structures.foreach.php)。 'foreach($ lastWeek as $ day){echo $ day; }' –

+0

排序我的问题,谢谢。 – user3204192

回答

2
// declare vars 
$lastWeek = array(); 
$arrlength = 0; 

// set vars 
$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')); 

$arrlength = count($lastWeek); // count after set $lastWeek! 

// Print result 
echo "<html><head><title>Event Booking timetable</title></head>"; 
echo "<body><table id=myTable border=2>"; 
echo "<tr><td>Week Commencing</td>"; 

for ($x=0; $x<$arrlength; $x++) 
{ 
    echo "<td>"; 
    echo $lastWeek[$x]; 
    echo "</td></tr>"; 
} 
2
$arrlength=count($lastWeek); 

你把你的项目,否则这将是0

2

你填充它之前计数数组的长度后,必须将其设置。此外,你不会以正确的方式关闭你的桌子和行。这应该工作:

$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')); 
$arrlength = count($lastWeek); 

echo "<html><head><title>Event Booking timetable</title></head>"; 
echo "<body><table id=myTable border=2>"; 
echo "<tr><td>Week Commencing</td></tr>"; 

for ($x=0; $x<$arrlength; $x++) 
{ 
echo "<tr><td>"; 
echo $lastWeek[$x]; 
echo "</td></tr>"; 
} 

echo "</table>";