请以简洁的 PHP 类型代码提供以下问题的简单解决方案(只需大致遵循 PHP 类型语法):
我们希望能够输出嵌套的项目列表——列表中的项目可以是列表中其他项目的子项目。一个简单的 SQL 表将具有以下字段:
- itemID - 整数。
- 项目 - varchar。
- subItemOfID – 整数。
一小部分数据看起来像这样:
itemID item subItemOfID
1 Item1 0
2 Item2 0
3 Item3 0
4 Item10 1
5 Item11 1
6 Item12 1
7 Item100 4
8 Item101 4
9 Item102 4
10 Item30 3
11 Item31 3
12 Item32 3
输出需要看起来像这样(按项目排序的嵌套列表):
• Item1
o Item10
Item100
Item101
Item102
o Item11
o Item12
• Item2
• Item3
o Item30
o Item31
o Item32
如果 SubItemOfID 行按降序排列,我会得到这个,但是我之前使用的示例在项目中有一个正则表达式,我总是被告知这是对表做某事的不好方法,因为 varchars 可以改变。我需要帮助!这是我到目前为止所拥有的:
<?php
$table = array (
'itemID' => array(
1,2,3,4,5,6,7,8,9,10,11,12
),
'item' => array(
'Item1','Item2','Item3','Item10','Item11','Item12','Item100','Item101','Item102','Item30','Item31','Item32'
),
'subItemOfID' => array(
0,0,0,1,1,1,4,4,4,3,3,3
)
);
foreach($table as $header => $column) {
foreach($column as $data) {
if($header == 'item') {
$fixed = intval(str_replace('Item','',$data));
$str_len = strlen($fixed);
echo '<ul>';
if($str_len === 1) {
echo '<li>'.$data.'</li>';
}
echo '<ul>';
if($str_len === 2 ) {
echo '<li>'.$data.'</li>';
}
echo'<ul>';
if($str_len ===3) {
echo '<li>'.$data.'</li>';
}
echo '</ul>';
echo '</ul>';
echo '</ul>';
}
}
}
?>
enter code here