相关疑难解决方法(0)

将一系列父子关系转换为分层树?

我有一大堆的名字 - parentname对,我想转成少数heirarchical树形结构成为可能.例如,这些可能是配对:

Child : Parent
    H : G
    F : G
    G : D
    E : D
    A : E
    B : C
    C : E
    D : NULL
Run Code Online (Sandbox Code Playgroud)

需要转化为(a)层次结构树:

D
??? E
?   ??? A
?   ?   ??? B
?   ??? C   
??? G
    ??? F
    ??? H
Run Code Online (Sandbox Code Playgroud)

我想要的最终结果是一组嵌套的<ul>元素,每个元素都<li>包含孩子的名字.

有在配对没有不一致(孩子是它自己的父母,父母是孩子的孩子,等等),所以一堆优化大概可以做.

在PHP中,我如何从包含child => parent对的数组转到一组嵌套<ul>s?

我有一种感觉,涉及到递归,但我还没有完全清醒地思考它.

php tree recursion

97
推荐指数
5
解决办法
6万
查看次数

从数组列表创建数组树

我有一个这样的列表:

array(
  array(id=>100, parentid=>0, name=>'a'),
  array(id=>101, parentid=>100, name=>'a'),
  array(id=>102, parentid=>101, name=>'a'),
  array(id=>103, parentid=>101, name=>'a'),
)
Run Code Online (Sandbox Code Playgroud)

但是更大,所以我需要一种有效的方法将它变成像这样的结构树:

array(
  id=>100, parentid=>0, name=>'a', children=>array(
    id=>101, parentid=>100, name=>'a', children=>array(
      id=>102, parentid=>101, name=>'a',
      id=>103, parentid=>101, name=>'a',
    )
  )
)
Run Code Online (Sandbox Code Playgroud)

我不能使用像嵌套集或像becoas这样的东西,我可以在我的数据库中添加左右值.有任何想法吗?

php arrays tree recursion

43
推荐指数
5
解决办法
8万
查看次数

平面PHP数组到层次结构树

我有一个包含以下键的数组

id   
parent_id
name
Run Code Online (Sandbox Code Playgroud)

示例数组:

array(7) {
  [0]=>
  array(3) {
    ["id"]=>
    string(1) "4"
    ["parent_id"]=>
    string(1) "0"
    ["name"]=>
    string(16) "Top Level Page 4"
  }
  [1]=>
  array(3) {
    ["id"]=>
    string(1) "5"
    ["parent_id"]=>
    string(1) "1"
    ["name"]=>
    string(19) "Second Level Page 1"
  }
  [2]=>
  array(3) {
    ["id"]=>
    string(1) "6"
    ["parent_id"]=>
    string(1) "2"
    ["name"]=>
    string(19) "Second Level Page 2"
  }
  [3]=>
  array(3) {
    ["id"]=>
    string(1) "7"
    ["parent_id"]=>
    string(1) "5"
    ["name"]=>
    string(18) "Third Level Page 1"
  }
  [4]=>
  array(3) {
    ["id"]=>
    string(1) "3"
    ["parent_id"]=>
    string(1) "0" …
Run Code Online (Sandbox Code Playgroud)

php arrays hierarchy

12
推荐指数
2
解决办法
3万
查看次数

PHP - 从平面数组创建嵌套树菜单结构

我从WP数据库得到的响应中创建了一个嵌套的菜单数组.我在Corcel包的帮助下从Laravel控制器中的WP获取数据,然后使用菜单数据创建一个数组,现在这个数据已经达到了一个级别.因此,当菜单链接具有子菜单链接时,该数组如下所示:

{
    "Hjem": {
        "ID": 112,
        "title": "Hjem",
        "slug": "hjem",
        "url": "http://hivnorge.app/?p=112",
        "status": "publish",
        "main_category": "Hovedmeny",
        "submenus": [
            {
                "ID": 129,
                "title": "Lorem ipsum",
                "slug": "lorem-ipsum",
                "url": "http://hivnorge.app/?p=129",
                "status": "publish",
                "main_category": "Nyheter"
            }
        ]
    },
    "Nytt test innlegg": {
        "ID": 127,
        "title": "Nytt test innlegg",
        "slug": "nytt-test-innlegg",
        "url": "http://hivnorge.app/?p=127",
        "status": "private",
        "main_category": "Nyheter",
        "submenus": [
            {
                "ID": 125,
                "title": "Test innlegg",
                "slug": "test-innlegg",
                "url": "http://hivnorge.app/?p=125",
                "status": "publish",
                "main_category": "Nyheter"
            },
            {
                "ID": 129,
                "title": "Lorem ipsum", …
Run Code Online (Sandbox Code Playgroud)

php arrays tree recursion submenu

6
推荐指数
1
解决办法
1850
查看次数

使用一次循环将平面数组转换为树

所以,

问题

假设我们有平面阵列,结构如下:

$array = [
  ['level'=>1, 'name' => 'Root #1'],
  ['level'=>1, 'name' => 'Root #2'],
  ['level'=>2, 'name' => 'subroot 2-1'],
  ['level'=>3, 'name' => '__subroot 2-1/1'],
  ['level'=>2, 'name' => 'subroot 2-2'],
  ['level'=>1, 'name' => 'Root #3']
];
Run Code Online (Sandbox Code Playgroud)

问题是 - 转换该数组,使其成为一棵树.仅通过元素顺序和level字段确定从属.让我们定义children为存储子节点的维度名称.对于上面的数组将是:

  array (
    array (
      'level' => 1,
      'name' => 'Root #1',
    ),
    array (
      'level' => 1,
      'name' => 'Root #2',
      'children' => 
      array (
        array (
          'level' => 2,
          'name' => 'subroot 2-1',
          'children' = …

php arrays tree

5
推荐指数
1
解决办法
944
查看次数

标签 统计

php ×5

arrays ×4

tree ×4

recursion ×3

hierarchy ×1

submenu ×1