将数组嵌套到HTML列表 [英] Nested array to HTML list
问题描述
我有以下数组:
数组
(
[0] =>数组
(
[ID] => 1
[父母] => 0
[NAME] =>您的第一类
)
[ 1] =>数组
(
[ID] => 2
[父母] => 1
[NAME] =>您的第一个论坛
)
[2] =>数组
(
[ID] => 4
[父母] => 1
[NAME] =>另一论坛
)
[3] =>数组
(
[ID] => 5
[父母] => 1
[NAME ] => Good Forum
)
[4] =>数组
(
[ID] => 6
[PARENT] => 0
[NAME] => Top论坛
)
[5] =>数组
(
[ID] => 7
[父母] => 6
[NAME] => Sub论坛#1
)
[6] =>数组
(
[ID] => 9
[父母] => 7
[NAME] =>子论坛#1-1
)
[7] =>数组
(
[ID] => 10
[父母] => 7
[NAME] =>子论坛#1-2
)
[8] =>数组
(
[ID] => 8
[父母] => 6
[NAME] =>子论坛#2
)
)
OK在这里,我有var_export结果的要求:
$ (
$ p $
数组(
0 =>
数组
'ID'=>'1',
' PARENT'=>'0',
'NAME'=>'您的第一个分类',
),
1 =>
数组(
' ID'=>'2',
'PARENT'=>'1',
'NAME'=>'您的第一个论坛',
),
2 =>
array(
'ID'=>'4',
'PARENT'=>'1',
'NAME'=>'Another Forum ',
),
3 =>
数组(
'ID'=>'5',
'PARENT'=>'1',
'NAME'=>'好论坛',
),
4 =>
数组(
'ID'=>'6',
'PARENT'=> ;'0',
'NAME'=>'热门论坛',
),
5 =>
数组(
'ID'=> '7',
'PARENT'=> '6',
'NAME'=> 'Sub Forum#1',
),
6 =>
array(
'ID'=>'9',
'PARENT'=>'7',
'NAME'=>'Sub Forum#1- 1',
),
7 =>
array(
'ID'=>'10',
'PARENT'=>'7',
'NAME'=>'Sub Forum#1- 2',
),
8 =>
array(
'ID'=>'8',
'PARENT'=>'6',
'NAME'=>'Sub Forum#2' ,
),
)
其中一些数组的PARENT值会对另一个数组ID值。这有助于我使它们嵌套。但问题是:如何创建一个看起来像这样的HTML列表:
< ul>
< li id =1>
您的第一个分类
< ul>
< li id =2>
您的第一个论坛
< / li>
< li id =4>
另一个论坛
< / li>
< li id =5>
好论坛
< / li>
< ul>
< / li>
< li id =6>
热门论坛
< ul>
< li id =7>
分论坛#1
< ul>
< li id =9>
分论坛#1-1
< / li>
< li id =10>
分论坛#1-2
< / li>
< / ul>
< / li>
< li id =7>
分论坛#2
< / li>
< ul>
< / li>
< / ul>
有任何想法吗?
$ new_arr = array();
foreach($ arr as $ data)$ new_arr [$ data ['id']] = $ data;
foreach($ new_arr as $ id =>& $ data)$ data ['parent'] =& $ new_arr [$数据[父]];
现在您拥有了一个合适的数组结构。
<但是你可能不得不把它翻过来,因为它是由孩子构成的。但是,您的输出是由父级输出的。
因此,不是我发布的第二个foreach,请执行此操作:
<$ p $ ($ new_arr as $ id => $ data)$ new_arr [$ data ['parent']] ['children'] [] =& $数据;
I have the following array :
Array
(
[0] => Array
(
[ID] => 1
[PARENT] => 0
[NAME] => Your first category
)
[1] => Array
(
[ID] => 2
[PARENT] => 1
[NAME] => Your first forum
)
[2] => Array
(
[ID] => 4
[PARENT] => 1
[NAME] => Another Forum
)
[3] => Array
(
[ID] => 5
[PARENT] => 1
[NAME] => Good Forum
)
[4] => Array
(
[ID] => 6
[PARENT] => 0
[NAME] => Top Forum
)
[5] => Array
(
[ID] => 7
[PARENT] => 6
[NAME] => Sub Forum #1
)
[6] => Array
(
[ID] => 9
[PARENT] => 7
[NAME] => Sub Forum #1-1
)
[7] => Array
(
[ID] => 10
[PARENT] => 7
[NAME] => Sub Forum #1-2
)
[8] => Array
(
[ID] => 8
[PARENT] => 6
[NAME] => Sub Forum #2
)
)
OK Here I have the var_export result as requested :
array (
0 =>
array (
'ID' => '1',
'PARENT' => '0',
'NAME' => 'Your first category',
),
1 =>
array (
'ID' => '2',
'PARENT' => '1',
'NAME' => 'Your first forum',
),
2 =>
array (
'ID' => '4',
'PARENT' => '1',
'NAME' => 'Another Forum',
),
3 =>
array (
'ID' => '5',
'PARENT' => '1',
'NAME' => 'Good Forum',
),
4 =>
array (
'ID' => '6',
'PARENT' => '0',
'NAME' => 'Top Forum',
),
5 =>
array (
'ID' => '7',
'PARENT' => '6',
'NAME' => 'Sub Forum #1',
),
6 =>
array (
'ID' => '9',
'PARENT' => '7',
'NAME' => 'Sub Forum #1-1',
),
7 =>
array (
'ID' => '10',
'PARENT' => '7',
'NAME' => 'Sub Forum #1-2',
),
8 =>
array (
'ID' => '8',
'PARENT' => '6',
'NAME' => 'Sub Forum #2',
),
)
Some of that arrays PARENT value corespond to another array ID value. That helps me to make them nested. But the question is: how can I create an HTML list that will look like that:
<ul>
<li id="1">
Your First Category
<ul>
<li id="2">
Your First Forum
</li>
<li id="4">
Another Forum
</li>
<li id="5">
Good Forum
</li>
<ul>
</li>
<li id="6">
Top Forum
<ul>
<li id="7">
Sub Forum #1
<ul>
<li id="9">
Sub Forum #1-1
</li>
<li id="10">
Sub Forum #1-2
</li>
</ul>
</li>
<li id="7">
Sub Forum #2
</li>
<ul>
</li>
</ul>
Any idea please?
$new_arr = array();
foreach($arr as $data) $new_arr[$data['id']] = $data;
foreach($new_arr as $id => &$data) $data['parent'] =& $new_arr[$data['parent']];
Now you have a proper array structure.
But you may have to turn it inside out, since it's structured by child. But your output is by parent.
So instead of the second foreach I posted, do this:
foreach($new_arr as $id => $data) $new_arr[$data['parent']]['children'][] =& $data;
这篇关于将数组嵌套到HTML列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!