当前位置: 首页 > 面试题库 >

PHP分层数组-父级和子级

龙繁
2023-03-14
问题内容

我将PHP和mySQL与Idiorm结合使用。那可能不相关。

我的PHP数组

  • 这是父母与子女之间的关系。
  • 0是根父级。
  • 示例:根父级0有孩子33,孩子33有孩子27,孩子27有孩子71。

如果需要解决此问题,可以更改此数组结构。

array (
  33 => 
    array (
      0 => '27',
      1 => '41',
  ),
  27 => 
    array (
      0 => '64',
      1 => '71',
  ),
  0 => 
    array (
      0 => '28',
      1 => '29',
      2 => '33',
  ),
)

我的分层结果

像这样,但作为一个数组…

  0 => 
      28
      29
      33
         27 =>
               64
               71
         41

信息

  • 深度未知,可以无限。我尝试了foreach,但可能不是这样。

我自己的想法

  • 一些递归功能
  • 一些while循环?

我尝试了以上两种,只是一团糟。这很聪明。


问题答案:

@deceze的建议奏效了。但是,输入数组需要更改一个参数,像这样…

$rows = array(
    array(
        'id' => 33,
        'parent_id' => 0,
    ),
    array(
        'id' => 34,
        'parent_id' => 0,
    ),
    array(
        'id' => 27,
        'parent_id' => 33,
    ),
    array(
        'id' => 17,
        'parent_id' => 27,
    ),
);

https://stackoverflow.com/a/8587437/476:

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}

$tree = buildTree($rows);

print_r( $tree );


 类似资料:
  • 问题内容: MYSQL返回一个数组,如下所示。我正在使用列:“ id_parent”自引用表以创建层次结构。因此,“ id”为2的条目可以是“ id_parent”为2的任何条目的父级,依此类推。 如何将子级嵌套在其父级数组中的数组中 问题答案: 引用具有顺序无关紧要的优点(子节点可以位于其父节点之前):

  • 问题是要确定子数据的总和是否等于父数据。如果是,返回真,否则返回假。 下面是我的代码,在提交时出现错误。我知道这是一个简单的问题,但在编写了条件之后,我很难通过遍历所有左右节点来递归检查二叉树中每个节点的和条件。 请指导我,因为我哪里做错了。

  • 父级: 子组件: 如果使用withCtx(() => h('span', { class: 'span' }, '哈哈'), ins)是可以让span的scopeId和父级一致,但是这样必须在每个使用了子组件的父级里写一遍,太麻烦还容易漏,官方文档根本没写这东西 所以有没有一种方式,能通过修改子组件,父级不需要传其他乱七八糟的比如instance之类的给子组件,就能达到说子组件接收的render函

  • 我有两个实体使用Spring和Hibernate

  • 我在PHP中遇到了一个奇怪的问题,与symfony 1.4 我有一个启动多个工作线程的任务,有时,我需要停止所有工作线程(例如,在部署之后)。 我使用开始停止守护程序启动任务,我想通过向它发送信号SIGINT来停止它。 所以,这是我的代码: 我所做的非常简单:我分叉,创建N个子进程,在父进程中,我添加一个pcntl_signal来捕获SIGINT信号。signalHanlder函数检索子PID的列

  • 问题内容: 我用这个文章为例(做出反应的方式),但它不是为我工作。请指出我的错误,因为我不明白怎么了。 这是我看到的错误: 未捕获的TypeError:this.props.onClick不是函数 这是我的代码: 提前致谢! 问题答案: 问题在于回调内部不引用React组件,因此是。 您可以通过将第二个参数传递给来显式设置值: 现在,回调 内部 的值与回调 外部 (即实例)的值相同。 这与Reac