Php HTML表格的三维关联数组
这就是我的阵列的外观Php HTML表格的三维关联数组,php,html,multidimensional-array,html-table,Php,Html,Multidimensional Array,Html Table,这就是我的阵列的外观 (int) Year 1 => array( 'Department 1' => array( 'Sales' => '12345' ), 'Department 2' => array( 'Sales' => '12345' ), ), (int) Year 2 => array( 'Department 1' => array( 'Sales' => '12345' ), 'Departmen
(int) Year 1 => array(
'Department 1' => array(
'Sales' => '12345'
),
'Department 2' => array(
'Sales' => '12345'
),
),
(int) Year 2 => array(
'Department 1' => array(
'Sales' => '12345'
),
'Department 2' => array(
'Sales' => '12345'
),
)
我希望能够创建一个表格,其中标题是X轴上的年份。
Y轴需要以部门名称开头。相邻单元格需要在一个单元格中包含销售额、收入和总计
应该是这样的
Department____| ___YEAR1_______ | __Year2
Department 1 |Sales [dept 1][year 1] | Sales[dept 1][year 2]
Department 2 |Sales [dept 2][year 1] | Sales [dept 2][year 2]
我使用嵌套的foreach循环
foreach($List as $key=>$row) {
echo "<tr><td>".$key."</td>";
foreach($row as $key2=>$col){
echo "<td>" . 'Sales: '.round($col['sales'],2) ."</td>";
}
echo "</tr>";
}
echo "</table>"; ?>
foreach($key=>$row){
回显“$key.”;
foreach($key2=>$col的行){
echo.“'Sales:”.round($col['Sales'],2)。”;
}
回声“;
}
回声“;?>
但它在表格上打印的部门名称在x轴的顶部,年份在y轴的顶部。如何计算x轴上的年数和y轴上的部门数。问题在于,数组的维度与表中要迭代的顺序不一致。您需要显式地拉出键,以便在嵌套循环中迭代它们
$years = array_keys($List);
// Print column headings
echo "<table><thead><tr><th>Department</th>";
foreach ($years as $year) {
echo "<th>$year</th>";
}
echo "</tr></thead>";
// Print data rows
echo "<tbody>"
foreach (array_keys($List[$years[0]]) as $dept) {
echo "<tr><th>$dept</th>";
foreach ($years as $year) {
echo "<td>{$List[$year][$dept]['Sales'}]</td>";
}
echo "</tr>";
}
echo "</tbody></table>";
$years=array\u key($List);
//打印列标题
呼应“部门”;
foreach($年为$年){
回音“$年”;
}
回声“;
//打印数据行
回声“”
foreach(数组_键($List[$years[0]])作为$dept){
回音“$dept”;
foreach($年为$年){
echo“{$List[$year][$dept]['Sales'}]”;
}
回声“;
}
回声“;
正如我提到的,这取决于所有年份都有相同的部门。如果你随着时间的推移增加新的部门,它将无法工作。您可以通过使用
array\u reduce
合并所有部门列表来解决此问题,我将把它作为练习留给读者。是否保证数组中的所有行都有相同的部门?是的。这基本上是按年度划分的。该阵列每年使用相同的部门列表构建。非常感谢。我从来没有想过用dept作为键来推动数组键。