【问题标题】:Get all children for a given parent id in array获取数组中给定父 ID 的所有子代
【发布时间】:2023-03-13 09:46:01
【问题描述】:

我有一个这样的数组:

array(
    array(
        'id' => 1,
        'parent_id' => null
    ),
    array(
        'id' => 2,
        'parent_id' => 1
    ),
    array(
        'id' => 3,
        'parent_id' => 2
    ),
    array(
        'id' => 4,
        'parent_id' => null
    ),
    array(
        'id' => 5,
        'parent_id' => 4
    )
);

如何找到给定 parent_id 的所有孩子,包括所有孙子?例如,该函数将为 parent_id 1 返回 2,3。

谢谢。

【问题讨论】:

  • 这个问题是不是打错字了,还是我太厚了没看懂?如果我理解,指定 parent_id 1 可以返回 2(同一数组中 id 键的值)或 1(子数组在父数组中的位置)。我看不出 3 如何与这个数组匹配。我错过了什么吗?
  • 您的观点完全正确,但我想要得到的是“id”值而不是数组索引。你又是对的,如果我想得到 parent_id 1 的孩子,我会得到 id 2。但在那之后就变得棘手了。在找到 id 1 的孩子之后,我也不想停下来继续寻找这些结果的孩子。 (顺便说一句英语不好)

标签: php arrays recursion iterator parent-child


【解决方案1】:

// 我更正了数组以适合您的结果 1 => 2,3

    <?php

    $test = array(
    array(
            'id' => 1,
            'parent_id' => null
    ),
    array(
            'id' => 2,
            'parent_id' => 1
    ),
    array(
            'id' => 3,
            'parent_id' => 1
    ),
    array(
            'id' => 4,
            'parent_id' => null
    ),
    array(
            'id' => 5,
            'parent_id' => 4
    )
    );

    // 1_2+3
    $parent_childs = ARRAY();
    foreach ($test AS $index => $child) {
        if (!isset($child['parent_id'])) { continue; }
        $parent_childs[$child['parent_id']][] = $child['id'];
    }


    echo '<pre>';var_dump($parent_childs); echo '</pre>';

    ?>

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    相关资源
    最近更新 更多