0
我遇到的情況,我有一個樹狀結構的數據是這樣的:PHP樹結構HTML表
$tree = array(
1 => array(
4 => array(),
5 => array()
),
2 => array(
6 => array(),
7 => array(
11 => array()
),
8 => array(
12 => array(
14 => array(),
15 => array()
)
),
),
3 => array(
9 => array(),
10 => array(
13 => array()
)
)
);
如何使用PHP遞歸函數這樣創建的HTML表格:
1 | 2 | 3 |
4 5 | 6 7 | 8 | 9 10 |
| |11 | 12 | | 13 |
|14 |15 |
我正在使用以下的PHP代碼:
function tree(array $data, &$tree = array(), $level = 0) {
// init
if (!isset($tree[$level])) $tree[$level] = array(count($array));
foreach ($data as $key => $value) {
// if value is an array, push the key and recurse through the array
if (is_array($value)) {
$tree[$level][] = $key;
tree($value, $tree, $level+1);
}
// otherwise, push the value
else {
$tree[$level][] = $value;
}
}
}
function make_table($array)
{
$output = '';
foreach($array as $item => $tr)
{
$c = 100/count($tr);
$output .= "<tr>";
foreach($tr as $th => $val)
{
$output .= "<th style='width:" . $c . "%'>" . $val . "</th>";
}
$output .= "</tr>";
}
return $output;
}
但是,上面的代碼不處理像第三行第一列。
1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 |
14 | 15 |
使用合併單元格,不寬。 –
如果可以將該數組轉換爲具有固定列數的二維數組,那將很簡單。 –
做一棵完整的樹會比較容易,而不是空葉,因爲元素的列數在任何時候都是已知的。那麼沒有值的元素可以留空。 – syck