将数组嵌套到HTML列表 [英] Nested array to HTML list

查看:92
本文介绍了将数组嵌套到HTML列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数组:

 数组

[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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆