Как создать многомерный массив с неограниченной глубиной по мере необходимости из следующего набора результатов «родитель-потомок»

Обратите внимание на класс «MAIN», в который помещается элемент, например

<div class="container">
     <ul class="select">
         <li> First</li>
         <li>Second</li>
    </ul>
</div>

. В приведенном выше сценарии объект MAIN, который будет наблюдать jQuery, является «контейнером».

Тогда вы в основном будете иметь имена элементов в контейнере, такие как ul, li и select:

$(document).ready(function(e) {
    $('.container').on( 'click',".select", function(e) {
        alert("CLICKED");
    });
 });
0
задан Qaisar Khan 28 March 2019 в 03:27
поделиться

2 ответа

пример сценария, который вы используете для создания массива с 2 lvl ???

Вам нужно будет использовать функцию структуры рекурсии:

<?php
function buildArray(array $elements, $parentId = 0) {
    $branch = array();

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

    return $branch;
}

$result= buildArray($rows);
0
ответ дан walter nuñez 28 March 2019 в 03:27
поделиться

На этом сайте есть много примеров рекурсивных функциональных кодов, но почти все они начинаются с дочерних элементов и вплоть до родителей. В моем случае мне нужно было начать с родителя и пройти весь путь до детей.

Итак, я смог решить эту проблему, написав рекурсивную функцию следующим образом:

            function findParentsParent($result,$category) {
            global $subs;
            foreach ($result as $row) {
                if ($row['childName'] == $category['name']) {
                    $subs[] = $category['childName'];
                    findParentsParent($result,$row);
                    return array_reverse($subs);
                } elseif ($row['childName'] == $category['childName']) {
                    $subs[] = $category['childName'];
                    $subs[] = $category['name'];
                    return array_reverse($subs);
                }
            }
        }
0
ответ дан Qaisar Khan 28 March 2019 в 03:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: