php tree получить список всех родителей дочернего узла - PullRequest
0 голосов
/ 20 июня 2020

Мне нужен список всех родителей дочернего узла. Я ищу, но получаю все дочерние узлы родителя. мой массив выглядит как

array(
array('id' => 1, 'parent' => 0),
array('id' => 2, 'parent' => 0),
array('id' => 3, 'parent' => 0),
array('id' => 4, 'parent' => 1),
array('id' => 5, 'parent' => 4),
array('id' => 6, 'parent' => 5));

введите описание изображения здесь

и мой желаемый результат: я даю входной идентификатор дочернего узла, и он вернет всех родителей. например, я дам дочернему ID 'raja', и он выдаст результат 1) mani sh 2) vijay 3) admin.

1 Ответ

3 голосов
/ 20 июня 2020

Посмотрите на этот пример, дайте мне знать, если это то, что вы ищете.

<?php 
$arr = array(
    array('id' => 1, 'parent' => 0),
    array('id' => 2, 'parent' => 0),
    array('id' => 3, 'parent' => 0),
    array('id' => 4, 'parent' => 1),
    array('id' => 5, 'parent' => 4),
    array('id' => 6, 'parent' => 5));

$parents = [];
function find_parents($input, $id) {
    global $parents, $arr;
    if(is_array($input)) {
        foreach($input as $k => $val) {
           
            if($val['id'] == $id  && $val['parent'] != 0) {
                array_push($parents, $val['parent']);
                find_parents($arr, $val['parent']);
            }
        }
    }
}
find_parents($arr, 6);
print_r($parents);

Предоставление 6 в качестве ввода будет выводить

Array
(
    [0] => 5
    [1] => 4
    [2] => 1
)

Вы можете используйте рекурсию, чтобы ее можно было использовать на любом уровне. Не нужно ограничивать уровни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...