Jos*_*ohn 5 html php arrays nested html-table
这是一个简单的问题,我一直试图解决几个小时.我有一个数组包含几个学生的信息和他们在测试中得分的标记.总共有8个科目,每个科目有5个参数.
该数组如下所示:
Array
(
[Ron] => Array
(
[subject1] => Array
(
[test1] => 47
[test2] => 86
[total] => 133
[percentage] => 88.67
[status] => Pass
)
[pass_count] => 8
[fail_count] => 0
[gross_total] => 963
[gross_percentage] => 80.25
[...]
[subject8] => Array
(
[test1] => 48
[test2] => 86
[total] => 134
[percentage] => 89.33
[status] => Pass
)
[pass_count] => 8
[fail_count] => 0
[gross_total] => 900
[gross_percentage] => 75.50
)
[John] => Array
(
[subject1] => Array
(
[test1] => 39
[test2] => 72
[total] => 111
[percentage] => 74
[status] => Pass
)
[pass_count] => 8
[fail_count] => 0
[gross_total] => 963
[gross_percentage] => 80.25
[...]
[subject8] => Array
(
[test1] => 39
[test2] => 75
[total] => 114
[percentage] => 76
[status] => Pass
)
[pass_count] => 8
[fail_count] => 0
[gross_total] => 846
[gross_percentage] => 70.5
)
)
Run Code Online (Sandbox Code Playgroud)
我需要在一个格式良好的HTML表格中显示以下内容(我打算使用Bootstrap),但我不能在我的生活中弄清楚如何使用PHP正确地嵌套表格.
这是我目前拥有的HTML标记:http://jsfiddle.net/9y910uvp/
这给出了以下结果:

哪个没关系.
实际问题
我正在使用PHP来显示数组中的内容.我很困惑如何显示嵌套<tr>和<td>部分的值.
如何遍历数组并正确显示内容?(到目前为止,我发布了我的尝试,但他们都是愚蠢的,没有工作,所以我不发布).
一个例子将非常感激,因为我花了无数个小时试图让这个工作,但失败了很多.
不完全相同的输出,但这是一种递归方法,应该处理嵌套数组的任何深度......
<?php
$data = Array (
"Ron" => Array (
"subject1" => Array (
"tests" => Array (
"test1" => 47,
"test2" => 86,
"total" => 133,
"percentage" => 88.67,
"status" => "Pass",
),
"pass_count" => 8,
"fail_count" => 0,
"gross_total" => 963,
"gross_percentage" => 80.25,
),
"subject8" => Array (
"tests" => Array (
"test1" => 48,
"test2" => 86,
"total" => 134,
"percentage" => 89.33,
"status" => "Pass",
),
"pass_count" => 8,
"fail_count" => 0,
"gross_total" => 900,
"gross_percentage" => 75.50,
),
),
"John" => Array (
"subject1" => Array (
"tests" => Array (
"test1" => 39,
"test2" => 72,
"total" => 111,
"percentage" => 74,
"status" => "Pass",
),
"pass_count" => 8,
"fail_count" => 0,
"gross_total" => 963,
"gross_percentage" => 80.25,
),
"subject8" => Array (
"tests" => Array (
"test1" => 39,
"test2" => 75,
"total" => 114,
"percentage" => 76,
"status" => "Pass",
),
"pass_count" => 8,
"fail_count" => 0,
"gross_total" => 846,
"gross_percentage" => 70.5,
),
),
);
print_r($data);
$table = table_cell($data);
echo $table;
function table_cell($data) {
$return = "<table border='1'>";
foreach ($data as $key => $value) {
$return .= "<tr><td>$key</td><td>";
if (is_array($value)) {
$return .= table_cell($value);
} else {
$return .= $value;
}
$return .= "</td><tr>";
}
$return .= "</tr></table>";
return($return);
}
Run Code Online (Sandbox Code Playgroud)
桌子看起来不像要求的那样但是......这是一个有趣的练习......

从您的数组来看,这可能类似于您正在寻找的内容:
<table border="1">
<thead>
<tr>
<th>Name</th>
<th>Subject</th>
<th>Test1 Marks</th>
<th>Test2 Marks</th>
<th>Total Marks</th>
<th>Status</th>
<th>Percentage</th>
<th>Pass Count</th>
<th>Total Percentage</th>
</tr>
</thead>
<tbody>
<?php foreach($arr as $name => $subjects): ?>
<?php $i = 0; ?>
<?php foreach($subjects as $subjectName => $subject): ?>
<?php if (is_array($subject)): ?>
<tr>
<?php if ($i === 0): ?>
<td rowspan="8"><?php echo $name; ?></td>
<?php endif; ?>
<td><?php echo $subjectName; ?></td>
<td><?php echo $subject['test1']; ?></td>
<td><?php echo $subject['test2']; ?></td>
<td><?php echo $subject['total']; ?></td>
<td><?php echo $subject['status']; ?></td>
<td><?php echo $subject['percentage']; ?></td>
<?php if ($i === 0): ?>
<td rowspan="8"><?php echo $subjects['pass_count']; ?></td>
<td rowspan="8"><?php echo $subjects['gross_percentage']; ?></td>
<?php endif; ?>
</tr>
<?php endif; ?>
<?php $i++; ?>
<?php endforeach; ?>
<?php endforeach; ?>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |