foreach 只显示一个元素
foreach only displaying one element
请有人拯救我的理智并告诉我我做错了什么。
我有一个查询填充的数组,如果我对该数组执行 print_r,我会得到以下结果,
[classes] => Array (
[0] => Array ( [course_number] => 1[course_name] => Thai [course_date] => 2015-02-23 [instructor_name] => Aaron )
[1] => Array ( [course_number] => 2 [course_name] => Linguistics [course_date] => 2015-03-02 [instructor_name] => Aaron )
[2] => Array ( [course_number] => 3 [course_name] => Ethics [course_date] => 2015-03-02 [instructor_name] => Aaron )
[3] => Array ( [course_number] => 4 [course_name] => Vocabulary [course_date] => 2015-03-02 [instructor_name] => Aaron )
[4] => Array ( [course_number] => 5 [course_name] => Civilization [course_date] => 2015-03-09 [instructor_name] => Aaron )
[5] => Array ( [course_number] => 6 [course_name] => Statistics [course_date] => 2015-03-09 [instructor_name] => Aaron )
[6] => Array ( [course_number] => 7 [course_name] => English [course_date] => 2015-03-09 [instructor_name] => Aaron ) )
我正在使用以下内容尝试生成一个 table 与任何 class 在同一行的同一日期。
echo'
<table>
<caption><h1>Class Registration</h1></caption>
<form action="',$scripturl,'?action=simsub_ENROL" method="POST" autocomplete="off">
<input type=hidden name="studentid" value="' . $user_info['id'] . '">
<tr>';
$date = "2015-01-01";
$i = 1;
foreach ($simsub['classes'] as $record){
if($date < $record['course_date']) {
$i++;
echo '</tr>
<td>
' . $record['course_date'] . '
</td>
<td>
' . $record['course_number'] . ' - ' . $record['course_name'] . '<br />
' . $record['instructor_name'] . '<br />
<input type="radio" name="class' . $i . '" value="' . $vrow['course_number'] . '
</td>';
}else {
echo '
<td>
' . $record['course_number'] . ' - ' . $record['course_name'] . '<br />
' . $record['instructor_name'] . '<br />
<input type="radio" name="class' . $i . '" value="' . $record['course_number'] . '
</td>';
}
$date = $record['course_date'];
}
echo '
</tr>
<tr>
<td>
<div style="text-align:center"><input type="submit" class="button blue" value="Submit Registrations"></div>
</td>
</tr>
</form>
</table>';
当它输出时,我得到一个 table 显示 2 列,第一个日期值和泰语 class 的值,然后没有其他内容。看起来 foreach 循环永远不会返回执行第二个值。
提交按钮显示在与泰文 class 信息相同的 table 字段中?
我建议使用 strtotime 进行日期比较。
主要问题是您的单选按钮 HTML 缺少结束符 " />
,这会阻止显示其他列。
I'm using the following to try and generate a table with any classes on the same date on the same row.
如果要在同一行显示同一日期的类,使用临时变量$date
,则应在当前循环日期为</tr><tr>
时打印</tr><tr>
不等于结果的日期,在循环结束时,您应该打印 </tr>
以完成该行。但是,您的查询应按课程日期排序。您在 <table>
和 <tr>
之间的 <caption>
、<form>
和 <input>
应该移到外面。
<?php
$simsub = array(
'classes' => Array (
0 => Array ( 'course_number' => 1, 'course_name' => 'Thai', 'course_date' => '2015-02-23', 'instructor_name' => 'Aaron' ),
1 => Array ( 'course_number' => 2, 'course_name' => 'Linguistics', 'course_date' => '2015-03-02', 'instructor_name' => 'Aaron' ),
2 => Array ( 'course_number' => 3, 'course_name' => 'Ethics', 'course_date' => '2015-03-02', 'instructor_name' => 'Aaron' ),
3 => Array ( 'course_number' => 4, 'course_name' => 'Vocabulary', 'course_date' => '2015-03-02', 'instructor_name' => 'Aaron' ),
4 => Array ( 'course_number' => 5, 'course_name' => 'Civilization', 'course_date' => '2015-03-09', 'instructor_name' => 'Aaron' ),
5 => Array ( 'course_number' => 6, 'course_name' => 'Statistics', 'course_date' => '2015-03-09', 'instructor_name' => 'Aaron' ),
6 => Array ( 'course_number' => 7, 'course_name' => 'English', 'course_date' => '2015-03-09', 'instructor_name' => 'Aaron' ),
)
);
$scripturl = '';
$user_info = array('id' => 1);
echo '
<caption><h1>Class Registration</h1></caption>
<form action="'.$scripturl.'?action=simsub_ENROL" method="POST" autocomplete="off">
<input type=hidden name="studentid" value="' . $user_info['id'] . '">
<table border="1" cellspacing="2" cellpadding="5">
<tr>';
$date = "";
$i = 1;
foreach ($simsub['classes'] as $record) {
if($i == 1) $date = $record['course_date'];
if(strtotime($date) !== strtotime($record['course_date'])) {
echo '</tr><tr>';
}
echo '
<td>
' . $record['course_date'] . '
</td>
<td>
' . $record['course_number'] . ' - ' . $record['course_name'] . '<br />
' . $record['instructor_name'] . '<br />
<input type="radio" name="class' . $i . '" value="' . $record['course_number'] . '" />
</td>';
$date = $record['course_date'];
$i++;
}
echo '
</tr>
</table>
<div>
<input type="submit" class="button blue" value="Submit Registrations">
</div>
</form>';
The submit button is showing inside the same table field as Thai class information?
如果要在table中显示提交按钮,则必须将相应的colspan
设置为按钮<td>
,否则只需将其移出[=35] =].
PhpFiddle Demo
请有人拯救我的理智并告诉我我做错了什么。
我有一个查询填充的数组,如果我对该数组执行 print_r,我会得到以下结果,
[classes] => Array (
[0] => Array ( [course_number] => 1[course_name] => Thai [course_date] => 2015-02-23 [instructor_name] => Aaron )
[1] => Array ( [course_number] => 2 [course_name] => Linguistics [course_date] => 2015-03-02 [instructor_name] => Aaron )
[2] => Array ( [course_number] => 3 [course_name] => Ethics [course_date] => 2015-03-02 [instructor_name] => Aaron )
[3] => Array ( [course_number] => 4 [course_name] => Vocabulary [course_date] => 2015-03-02 [instructor_name] => Aaron )
[4] => Array ( [course_number] => 5 [course_name] => Civilization [course_date] => 2015-03-09 [instructor_name] => Aaron )
[5] => Array ( [course_number] => 6 [course_name] => Statistics [course_date] => 2015-03-09 [instructor_name] => Aaron )
[6] => Array ( [course_number] => 7 [course_name] => English [course_date] => 2015-03-09 [instructor_name] => Aaron ) )
我正在使用以下内容尝试生成一个 table 与任何 class 在同一行的同一日期。
echo'
<table>
<caption><h1>Class Registration</h1></caption>
<form action="',$scripturl,'?action=simsub_ENROL" method="POST" autocomplete="off">
<input type=hidden name="studentid" value="' . $user_info['id'] . '">
<tr>';
$date = "2015-01-01";
$i = 1;
foreach ($simsub['classes'] as $record){
if($date < $record['course_date']) {
$i++;
echo '</tr>
<td>
' . $record['course_date'] . '
</td>
<td>
' . $record['course_number'] . ' - ' . $record['course_name'] . '<br />
' . $record['instructor_name'] . '<br />
<input type="radio" name="class' . $i . '" value="' . $vrow['course_number'] . '
</td>';
}else {
echo '
<td>
' . $record['course_number'] . ' - ' . $record['course_name'] . '<br />
' . $record['instructor_name'] . '<br />
<input type="radio" name="class' . $i . '" value="' . $record['course_number'] . '
</td>';
}
$date = $record['course_date'];
}
echo '
</tr>
<tr>
<td>
<div style="text-align:center"><input type="submit" class="button blue" value="Submit Registrations"></div>
</td>
</tr>
</form>
</table>';
当它输出时,我得到一个 table 显示 2 列,第一个日期值和泰语 class 的值,然后没有其他内容。看起来 foreach 循环永远不会返回执行第二个值。
提交按钮显示在与泰文 class 信息相同的 table 字段中?
我建议使用 strtotime 进行日期比较。
主要问题是您的单选按钮 HTML 缺少结束符 " />
,这会阻止显示其他列。
I'm using the following to try and generate a table with any classes on the same date on the same row.
如果要在同一行显示同一日期的类,使用临时变量$date
,则应在当前循环日期为</tr><tr>
时打印</tr><tr>
不等于结果的日期,在循环结束时,您应该打印 </tr>
以完成该行。但是,您的查询应按课程日期排序。您在 <table>
和 <tr>
之间的 <caption>
、<form>
和 <input>
应该移到外面。
<?php
$simsub = array(
'classes' => Array (
0 => Array ( 'course_number' => 1, 'course_name' => 'Thai', 'course_date' => '2015-02-23', 'instructor_name' => 'Aaron' ),
1 => Array ( 'course_number' => 2, 'course_name' => 'Linguistics', 'course_date' => '2015-03-02', 'instructor_name' => 'Aaron' ),
2 => Array ( 'course_number' => 3, 'course_name' => 'Ethics', 'course_date' => '2015-03-02', 'instructor_name' => 'Aaron' ),
3 => Array ( 'course_number' => 4, 'course_name' => 'Vocabulary', 'course_date' => '2015-03-02', 'instructor_name' => 'Aaron' ),
4 => Array ( 'course_number' => 5, 'course_name' => 'Civilization', 'course_date' => '2015-03-09', 'instructor_name' => 'Aaron' ),
5 => Array ( 'course_number' => 6, 'course_name' => 'Statistics', 'course_date' => '2015-03-09', 'instructor_name' => 'Aaron' ),
6 => Array ( 'course_number' => 7, 'course_name' => 'English', 'course_date' => '2015-03-09', 'instructor_name' => 'Aaron' ),
)
);
$scripturl = '';
$user_info = array('id' => 1);
echo '
<caption><h1>Class Registration</h1></caption>
<form action="'.$scripturl.'?action=simsub_ENROL" method="POST" autocomplete="off">
<input type=hidden name="studentid" value="' . $user_info['id'] . '">
<table border="1" cellspacing="2" cellpadding="5">
<tr>';
$date = "";
$i = 1;
foreach ($simsub['classes'] as $record) {
if($i == 1) $date = $record['course_date'];
if(strtotime($date) !== strtotime($record['course_date'])) {
echo '</tr><tr>';
}
echo '
<td>
' . $record['course_date'] . '
</td>
<td>
' . $record['course_number'] . ' - ' . $record['course_name'] . '<br />
' . $record['instructor_name'] . '<br />
<input type="radio" name="class' . $i . '" value="' . $record['course_number'] . '" />
</td>';
$date = $record['course_date'];
$i++;
}
echo '
</tr>
</table>
<div>
<input type="submit" class="button blue" value="Submit Registrations">
</div>
</form>';
The submit button is showing inside the same table field as Thai class information?
如果要在table中显示提交按钮,则必须将相应的colspan
设置为按钮<td>
,否则只需将其移出[=35] =].