从多维数组动态显示表


Display table dynamically from multidimensional array

所有大师。下面有一个数组

Array
(
    [1] => Array
        (
            [2] => Array
                (
                    [0] => 11
                    [1] => 12
                    [2] => 13
                )
            [3] => Array
                (
                    [0] => 21
                )
        )
    [2] => Array
        (
            [2] => Array
                (
                    [0] => 11
                    [1] => 12
                    [2] => 13
                )
            [3] => Array
                (
                    [0] => 21
                )
        )
    [3] => Array
        (
            [2] => Array
                (
                    [0] => 11
                    [1] => 12
                    [2] => 13
                )
            [3] => Array
                (
                    [0] => 21
                )
        )
)

在上面的数组第一个节点[1]是我的颜色值。其中[2]是我的size属性和这个值。在同一子节点中,它们的is[3]是我的type属性及其值。我想以这样的HTML表格格式显示它。1、2、3应按此顺序排列,如下表所示。

<table>
  <tr>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </tr>
  <tr>
    <td>1</td>
    <td>11</td>
    <td>21</td>
  </tr>
  <tr>
    <td>1</td>
    <td>12</td>
    <td>21</td>
  </tr>
  <tr>
    <td>1</td>
    <td>13</td>
    <td>21</td>
  </tr>
  <tr>
    <td>2</td>
    <td>11</td>
    <td>21</td>
  </tr>
  <tr>
    <td>2</td>
    <td>12</td>
    <td>21</td>
  </tr>
  <tr>
    <td>2</td>
    <td>13</td>
    <td>21</td>
  </tr>
  
 </table> 

如果他们没有3个节点表将显示如下

    <table>
      <tr>
        <th>1</th>
        <th>2</th>
     </tr>
      <tr>
        <td>1</td>
        <td>11</td>
      </tr>
      <tr>
        <td>1</td>
        <td>12</td>
       </tr>
      <tr>
        <td>1</td>
        <td>13</td>
      </tr>
      <tr>
        <td>2</td>
        <td>11</td>
      </tr>
      <tr>
        <td>2</td>
        <td>12</td>
       </tr>
      <tr>
        <td>2</td>
        <td>13</td>
      </tr>
      
     </table> 

请帮我实现这个

利用rangearray_mapendcurrent函数求解:

// $arr is your initial array
$parent_keys = range(1, count(current($arr)) + 1);
echo "<table><tr>" . 
        implode("", array_map(function($v){
            return "<th>".$v."</th>"; }, $parent_keys)
        );
echo "</tr>";
foreach ($arr as $k => $item) {
    if (count($item) > 1 && is_array(end($item))) $last = current(end($item));
    reset($item);
    foreach (current($item) as $v) {
        echo "<tr><td>$k</td><td>$v</td>". (isset($last)? "<td>$last</td>" : "") ."</tr>";
    }
}
echo "</table>";

链接

tr中的每个单元格序列由"键"(父级数组键)+当前数组项(称为Node[2]) +Node[3]中的值(如果存在,则)组成。
<th>单元格的数量取决于每个嵌套项(节点[2],节点[3])有多少个元素…包括级别

的键