树状结构中的PHP数组操作

树状结构中的PHP数组操作,php,arrays,Php,Arrays,我想用Tree结构格式化数组,如PHP TITLE 1 -- SUB TITLE 1-1 ---- SUB TITLE 1-2 TITLE 2 -- SUB TITLE 2-1 数组结构: Array ( [0] => Array ( [id] => 1 [sub_id] => 1 [title] => TITLE 1 [url] => www.

我想用
Tree
结构格式化数组,如
PHP

TITLE 1
-- SUB TITLE 1-1
---- SUB TITLE 1-2
TITLE 2
-- SUB TITLE 2-1
数组
结构:

Array
(
    [0] => Array
        (
            [id] => 1
            [sub_id] => 1
            [title] => TITLE 1
            [url] => www.title1.com
        )

    [1] => Array
        (
            [id] => 4
            [sub_id] => 4
            [title] => TITLE 2
            [url] => www.title2.com
        )

    [2] => Array
        (
            [id] => 2
            [sub_id] => 1
            [title] => SUB TITLE 1-1
            [url] => www.subtitle1.com
        )

    [3] => Array
        (
            [id] => 3
            [sub_id] => 2
            [title] => SUB TITLE 1-2
            [url] => www.subtitle2.com
        )

    [4] => Array
        (
            [id] => 5
            [sub_id] => 4
            [title] => SUB TITLE 2-1
            [url] => www.subtitle2.com
        )

)

我不知道该怎么做。

这是我的解决方案:

<?php
$data=Array
(
    0 => Array
        (
            'id' => 1,
            'sub_id' => 1,
            'title' => 'TITLE 1',
            'url' => 'www.title1.com',
        ),

    1 => Array
        (
            'id' => 4,
            'sub_id' => 4,
            'title' => 'TITLE 2',
            'url' => 'www.title2.com',
        ),

    2 => Array
        (
            'id' => 2,
            'sub_id' => 1,
            'title' => 'SUB TITLE 1-1',
            'url' => 'www.subtitle1.com',
        ),

    3 => Array
        (
            'id' => 3,
            'sub_id' => 2,
            'title' => 'SUB TITLE 1-2',
            'url' => 'www.subtitle2.com',
        ),

    4 => Array
        (
            'id' => 5,
            'sub_id' => 4,
            'title' => 'SUB TITLE 2-1',
            'url' => 'www.subtitle2.com',
        ),

);

function find_index(&$arr, $ind){
    if(empty($arr))
        return false;
    else {
        foreach($arr as &$aa){
            if($aa['id']==$ind['sub_id']) {
                $key=count($aa['sub_ar']);
                $aa['sub_ar'][$key]=$ind;
                $aa['sub_ar'][$key]['sub_ar']=array();
                return true;
            }
            else{
                $res=find_index($aa['sub_ar'],$ind);
                if($res)
                    return true;
            }
        }
        return false;
    }
}

$res=array();
foreach($data as $key=>$dat){
    if($dat['sub_id']==$dat['id']){
        $res[$key]=$dat;
        $res[$key]['sub_ar']=array();
    }
    else {
        $ret=find_index($res,$dat);
    }
}
?>
<pre><?php print_r($res); ?></pre>


您应该有一个递归函数,用于获取每个元素的数组并查找其子元素。现在还不清楚结果到底是什么。从这里开始想一想:我看过链接,但我的情况不同@你能解释一下格式吗?
id
sub\u id
值是否需要与数组键链接?非常感谢@坎乔·伊利耶夫,这对我有用…:)