Hello,

Here's primitive variant of function you might looking for.
It's very simplific and non-flexible, but it gives an idea:

/**
 * @param   array $arr Array to process
 * @param   integer $id (optional) Base parent ID
 * @return  array
 */
function mktree_array(&$arr, $id = 0)
{
    $result = array();
    foreach ($arr as $a) {
        if ($id == $a['parentID']) {
            $a['children']  = mktree_array($arr, $a['nid']);
            $result[] = $a;
        }
    }
    return $result;
}

You can see it's example usage at gihub:
http://gist.github.com/gists/400346


2010/5/13 shahrzad khorrami <shahrzad.khorr...@gmail.com>:
>
> hi all,
>
> I want to create an array from another array to create json file in my
> format and pass it to a js library....ok.
> I just know that I have to use recursive function... but how? it's hard for
> me to create the new array..
>
> main array:
>
> Array
> (
>     [0] => Array
>         (
>             [nid] => 1
>             [parentID] => 0
>             [text] => Dashboard
>             [cls] => x-btn-icon
>             [icon] => lib/extjs/resources/images/default/icon/Dashboard.png
>             [singleClickExpand] => 1
>             [leaf] => 0
>             [id] => Dashboard
>         )
>
>     [1] => Array
>         (
>             [nid] => 2
>             [parentID] => 1
>             [text] => Dashboard
>             [cls] => firstExpanded
>             [icon] => lib/extjs/resources/images/default/tree/s.gif
>             [singleClickExpand] => 1
>             [leaf] => 0
>             [id] =>
>         )
>
>     [2] => Array
>         (
>             [nid] => 3
>             [parentID] => 2
>             [text] => Dashboard
>             [cls] => x-btn-icon
>             [icon] => lib/extjs/resources/images/default/tree/s.gif
>             [singleClickExpand] => 1
>             [leaf] => 1
>             [id] => dashboard
>         )
> ...........
>
>
> ---------------------- The array I want to create: ----------------
>
>     [0] => Array
>         (
>             [nid] => 1
>             [parentID] => 0
>             [text] => Dashboard
>             [cls] => x-btn-icon
>             [icon] => lib/extjs/resources/images/default/icon/Dashboard.png
>             [singleClickExpand] => 1
>             [leaf] => 0
>             [id] => Dashboard
>             [children] =>     Array(
>                          [0] => Array
>                                     (
>                                     [nid] => 2
>                                     [parentID] => 1
>                                     [text] => Dashboard
>                                     [cls] => firstExpanded
>                                     [icon] =>
> lib/extjs/resources/images/default/tree/s.gif
>                                     [singleClickExpand] => 1
>                                     [leaf] => 0
>                                     [id] =>
>                                     [children] => Array(
>                                             [0] => Array
>                                                     (
>                                                       [nid] => 3
>                                                       [parentID] => 2
>                                                       [text] => Dashboard
>                                                       [cls] => x-btn-icon
>                                                       [icon] =>
> lib/extjs/resources/images/default/tree/s.gif
>                                                       [singleClickExpand] =>
> 1
>                                                       [leaf] => 1
>                                                       [id] => dashboard
>                                                           )
>                                             )
>                                     )
>                         )
>         )
>
> .........
> wow!
> it means that by nid and parentID, I'll notice where I must add children
> item to array...
>
> Thanks,
> Shahrzad
>
>
>
>



-- 
Sincerely yours,
Aleksey V. Zapparov A.K.A. ixti
FSF Member #7118
Mobile Phone: +34 617 179 344
Homepage: http://www.ixti.ru
JID: zappa...@jabber.ru

*Origin: Happy Hacking!

Reply via email to