簡潔な PHP 型コードで次の問題に対する簡単な解決策を提供してください (PHP 型構文に大まかに従う必要があるだけです)。
アイテムのネストされたリストを出力できるようにしたいと考えています。リスト内のアイテムは、リスト内の他のアイテムのサブアイテムにすることができます。単純な SQL テーブルには、次のフィールドがあります。
- itemID – int.
- アイテム – varchar。
- subItemOfID – int.
データの小さなサブセットは次のようになります。
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 行が降順である場合にこれを取得しますが、使用した前の例ではアイテムに正規表現が含まれていましたが、varchar が変更される可能性があるため、これはテーブルで何かを行うには悪い方法であると常に言われていました。私は助けが必要です!これは私がこれまでに持っているものです:
<?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