За последние 24 часа нас посетили 58303 программиста и 1848 роботов. Сейчас ищут 1306 программистов ...

Строка пути на PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем 15828, 23 фев 2015.

  1. 15828

    15828 Новичок

    С нами с:
    23 фев 2015
    Сообщения:
    1
    Симпатии:
    0
    Привет всем
    Помогите составить функцию на php
    имеется массив групп на сайте

    Код (Text):
    1. $groups_arr[id] = array('parent_id' => ХХХ, 'name' => ХХХ);
    где id это id группы, parent_id - id группы родителя, name - имя группы

    нужно составить функцию которая бы возвращала массив начиная с текущей группы и до корневой группы. Массив нужен для составления строки пути и для подсветки групп которые участвуют в пути.

    Массив должен выглядеть так:
    Код (Text):
    1. array() {
    2.       [1]
    3.         array() {
    4.           ["parent_id"] = 0
    5.           ["name"] = Группа 1
    6.         }
    7.       [2]
    8.         array() {
    9.           ["parent_id"] = 1
    10.           ["name"] = Подгруппа 1.1
    11.         }
    12.       [3]
    13.         array() {
    14.           ["parent_id"] = 2
    15.           ["name"] = Подгруппа подгруппы 1.1.1
    16.         }
    17.       }

    пробовал что то подобное
    вызывая getTree($groups_arr, ТЕКУЩАЯ ПОДГРУППА)
    Код (Text):
    1. function getTree($arr, $id) {
    2.        $path = array();
    3.        $path[] = array(id => $id, 'parent_id' => $arr[$id]['parent_id'], 'name' => $arr[$id['name']);
    4.        if ($arr[$id]['parent_id'] != 0) $path[] = getTree($arr, $arr[$id]['parent_id']);
    5.    
    6.        return $path;
    7.     }
    но получается массив не той структуры. уже все перепробовал, подскажите кто знает
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А на бумажке пробовал сделать так как хочешь?
     
  3. joshadow

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

    С нами с:
    24 фев 2015
    Сообщения:
    10
    Симпатии:
    1
    Код (Text):
    1.  
    2. $groups= array(
    3.                                 '1' => array("parent_id"=>0,"name"=>"Группа 1"),
    4.                                 '2' => array("parent_id"=>1,"name"=>"Группа 1.1"),
    5.                                 '3' => array("parent_id"=>2,"name"=>"Группа 1.1.1"),
    6.                                 '4' => array("parent_id"=>0,"name"=>"Группа 2"),
    7.                                 '5' => array("parent_id"=>4,"name"=>"Группа 2.1"),
    8.                                 '6' => array("parent_id"=>5,"name"=>"Группа 2.1.1")
    9.                             );
    10.  
    11. // получить дерево от ветки к корню в параметрах: массив групп и номер текущей группы
    12. function getGroupTree($grps,$nodNumber)
    13. {
    14.     // массив на выход
    15.     $tree=array();
    16.    
    17.     $parentNumber=$grps[$nodNumber]["parent_id"];
    18.     if ($parentNumber!==0)
    19.     {
    20.         $tree=getGroupTree($grps,$parentNumber);
    21.         array_push($tree,$grps[$nodNumber]);
    22.     }
    23.     else
    24.     {
    25.         $tree[]=$grps[$nodNumber];
    26.     }
    27.    
    28.     return $tree;
    29. }
    30.  
    31. $ntree=getGroupTree($groups,3);
    32. var_dump($ntree);
    типа того.