четверг, 23 февраля 2017 г.

PHP Recursive data from query


Необходимо сделать рекурсивный вывод данных из массива используя один запрос к базе.
Пример для вывода записей в выпадающий список:
function build_tree($arrs, $parent_id=0, $level=0) {
    foreach ($arrs as $arr) {
        if ($arr['ParentID'] == $parent_id) {
            echo '<option value="' . $arr['ID'] . '">'.str_repeat(" &nbsp", $level)." ".$arr['Title'].'</option>';
            build_tree($arrs, $arr['ID'], $level+1);
        }
    }
}
echo '<select onchange="location = this.value;">';
build_tree($arr_b, 0);
echo '</select>';

а еще можно вывести ссылки таким способом:
// Recursive function
function getList($rows, $id=0){
    // Start a new list
    $newList = null;
    foreach($rows as $key => $row) {
        if ($row['ParentID'] == $id) {
            // Add an UL tag when LI exists
            $newList == null ? $newList = "<ul>" : $newList;
            $newList .= "<li>";
            $newList .= "<a href=\"\">{$row['Title']}</a>";
            // Find childrens
            $newList .= getList(array_slice($rows,$key),$row['ID']);
            $newList .= "</li>";
        }
    }
    // Add an UL end tag
    strlen($newList) > 0 ? $newList .= "</select>" : $newList;
    return $newList;
}
 print_r(getList($arr_b));

Комментариев нет:

Отправить комментарий

Постоянные читатели

Популярные сообщения