Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php HTML表格的三维关联数组_Php_Html_Multidimensional Array_Html Table - Fatal编程技术网

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作为键来推动数组键。