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]是我的尺寸属性和这个值。在同一个子节点中,它们的[3]是我的类型属性及其值。我想以这样的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>
请帮助我实现这一目标。
答案 0 :(得分:0)
使用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
中的每个单元格序列都包含当前数组项的“key”(父级别的数组键) + 值(您称之为 Node [2] ] )来自节点[3] 的 + 值(,如果存在)。
<th>
的数量单元格取决于每个嵌套项目(节点[2],节点[3])有多少元素...包括来自父级级别的键