我需要一些帮助,我正在尝试创建一个动态HTML表格,它将显示嵌套数组的一些结果。
我的数组总是这样设置:
Array
(
[column_label] => Size No.
[column_data] => Array
(
[0] => Array
(
[column_cell] => #3
)
[1] => Array
(
[column_cell] => #3.5
)
[2] => Array
(
[column_cell] => #4
)
[3] => Array
(
[column_cell] => #4.5
)
)
)
Array
(
[column_label] => Approx. Diameter Inches
[column_data] => Array
(
[0] => Array
(
[column_cell] => 3/32"
)
[1] => Array
(
[column_cell] => 7/64"
)
[2] => Array
(
[column_cell] => 1/8"
)
[3] => Array
(
[column_cell] => 9/64"
)
)
)
Array
(
[column_label] => Approx. Diameter mm
[column_data] => Array
(
[0] => Array
(
[column_cell] => 2.38
)
[1] => Array
(
[column_cell] => 2.78
)
[2] => Array
(
[column_cell] => 3.18
)
[3] => Array
(
[column_cell] => 3.57
)
)
)
Array
(
[column_label] => Catalog No.
[column_data] => Array
(
[0] => Array
(
[column_cell] => 32030
)
[1] => Array
(
[column_cell] => 32035
)
[2] => Array
(
[column_cell] => 32040
)
[3] => Array
(
[column_cell] => 32045
)
)
)
我需要遍历每个[column_data]
数组并准备它们在我的表中显示为表格单元格。
例如,我的表中的一行应包含column_data数组中的表格单元格,其中键为0.我的表格中的下一行将包含column_data数组中的表格单元格,键为1,依此类推。
希望这是有道理的,这样我确定单元格将始终对应于Column_label表标题并在单元格中垂直显示。
这是我失败的尝试(未完成):
<?php if ($product_table) {
//Setup empty arrays
$products = array();
$labels = array();
$data = array();
$column_cells = array();
foreach($product_table as $product) {
//echo '<pre>';
//print_r($product);
//echo '</pre>';
//echo '<th>' . $product['column_label'] . '</th>';
$products[] = $product;
$labels[] = $product['column_label'];
$data[] = $product['column_data'];
foreach ($product['column_data'] as $column_data) {
$column_cells[] = $column_data;
}
}
?>
<table class="table">
<tr>
<?php foreach($labels as $label) {
echo '<th>' . $label . '</th>';
} ?>
</tr>
<?php foreach($products as $product) { ?>
<tr>
<?php
echo '<pre>';
print_r($product);
echo '</pre>';
?>
</tr>
<?php } ?>
</table>
<?php } ?>
答案 0 :(得分:1)
您需要遍历column_data
,然后使用数组键,根据密钥将column_cell
添加到该行。
$labels = array();
$rows = array();
foreach($product_table as $product) {
$labels[] = $product['column_label'];
foreach ($product['column_data'] as $key => $column_data) {
$rows[$key][] = $column_data['column_cell'];
}
} ?>
然后在您的表中,您需要遍历每个行数组,并打印单元格数据
<table class="table">
<tr>
<?php foreach($labels as $label) {
echo '<th>' . $label . '</th>';
} ?>
</tr>
<?php foreach($rows as $row) { ?>
<tr>
<?php foreach($row as $cell) {
echo '<td>' . $cell . '</td>';
} ?>
</tr>
<?php } ?>
</table>
使用您的样本数据 -
$product_table = array(
array('column_label' => 'Size No.',
'column_data' => array(
0 => array('column_cell' => '#3'),
1 => array('column_cell' => '#3.5'),
2 => array('column_cell' => '#4'),
3 => array('column_cell' => '#4.5') )
),
array('column_label' => 'Approx. Diameter Inches',
'column_data' => array(
0 => array('column_cell' => '3/32"'),
1 => array('column_cell' => '7/64"'),
2 => array('column_cell' => '1/8"'),
3 => array('column_cell' => '9/64"'))
),
array('column_label' => 'Approx. Diameter mm',
'column_data' => array(
0 => array('column_cell' => '2.38'),
1 => array('column_cell' => '2.78'),
2 => array('column_cell' => '3.18'),
3 => array('column_cell' => '3.57') )
),
array('column_label' => 'Catalog No.',
'column_data' => array(
0 => array('column_cell' => '32030'),
1 => array('column_cell' => '32035'),
2 => array('column_cell' => '32040'),
3 => array('column_cell' => '32045') )
)
);
你最终得到了这个结果