За последние 24 часа нас посетили 20208 программистов и 1608 роботов. Сейчас ищут 1748 программистов ...

Вывод иерархии в обратном порядке

Тема в разделе "PHP для новичков", создана пользователем ds837, 25 авг 2010.

  1. ds837

    ds837 Активный пользователь

    С нами с:
    25 авг 2010
    Сообщения:
    11
    Симпатии:
    0
    скажите кто знает как это можно сделать

    есть два запроса из mysql
    первый запрос заносит всё категории в 1 массив
    второй запрос заносить всех детей в 2 массив
    в итоге у меня есть 2 массива

    1) array_categories
    2) array_children

    первый массив (категории)

    PHP:
    1.  
    2. Array // array_categories
    3. (
    4.     [0] => Array([id] => 1 [pid] => 0 [name] => Магазин)
    5.     [1] => Array([id] => 2 [pid] => 1 [name] => Фрукты)
    6.     [2] => Array([id] => 3 [pid] => 1 [name] => Хлеб)
    7.     [3] => Array([id] => 4 [pid] => 2 [name] => Спелые)
    8.     [4] => Array([id] => 5 [pid] => 3 [name] => Свежий)
    9.     [5] => Array([id] => 6 [pid] => 4 [name] => Яблоко)
    10.     [6] => Array([id] => 7 [pid] => 4 [name] => Груша)
    11.     [7] => Array([id] => 8 [pid] => 4 [name] => Лимон)
    12.     [8] => Array([id] => 9 [pid] => 5 [name] => Белый)
    13.     [9] => Array([id] => 10 [pid] => 5 [name] => Чёрный)
    14. )
    массив категорий (array_categories) выводит вот такое дерево

    - Магазин // pid 0
    - - Фрукты // pid 1
    - - - Спелые // pid 2
    - - - - Яблоко // pid 4
    - - - - Груша // pid 4
    - - - - Лимон // pid 4
    - - Хлеб // pid 1
    - - - Свежий // pid 3
    - - - - Белый // pid 5
    - - - - Чёрный // pid 5

    второй массив (откуда начинать построение дерева от детей к родителям - с низу в верх)

    PHP:
    1.  
    2. Array // array_children
    3. (
    4.     [0] => Array([cid] => 6) // Яблоко
    5.     [1] => Array([cid] => 7) // Груша
    6.     [2] => Array([cid] => 8) // Лимон
    7.     [3] => Array([cid] => 9) // Белый
    8.     [4] => Array([cid] => 10) // Чёрный
    9. )
    есть вот такой код

    PHP:
    1. Shop($array_categories, $array_children);
    2.  
    3. function Shop($array_categories, $array_children)
    4. {
    5.     foreach ($array_categories as $result_1)
    6.     {
    7.         foreach ($array_children as $result_2)
    8.         {
    9.             if ($result_1['cid'] == $result_2['id'])
    10.             {
    11.                 echo $result_2['name'].'<br>';
    12.             }
    13.         }
    14.     }  
    15. }
    выводит только так

    Яблоко
    Груша
    Лимон
    Белый
    Чёрный

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

    - Магазин
    - - Фрукты
    - - - Спелые
    - - - - Яблоко
    - - - - Груша
    - - - - Лимон
    - - Хлеб
    - - - Свежий
    - - - - Белый
    - - - - Чёрный
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    ИМХО, задача изначально стоит неправильно.
    реализовать можно, но геммора очень много.

    вопрос - зачем это надо? не совсем понятен смысл задачи.
    и почему-бы не воспользоваться первым же массивом для построения того же дерева?
     
  3. wiiio

    wiiio Активный пользователь

    С нами с:
    24 авг 2010
    Сообщения:
    18
    Симпатии:
    0
  4. ds837

    ds837 Активный пользователь

    С нами с:
    25 авг 2010
    Сообщения:
    11
    Симпатии:
    0
    немножко не та задача по ссылке скрипт выводит всё дерево рекурсивно
    а у меня сложность в постарение дерева в обратном порядке
    то есть если стандартное дерево строится с верху в низ (от родителей к потомкам)
    то у меня не как не получается построить дерево в обратном порядке с низу в верх (от потомков к родителям)