所有大师。下面有一个数组
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>
请帮我实现这个
利用range
、array_map
、end
、current
函数求解:
// $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])有多少个元素…包括父级别