在树形结构PHP数组操作 [英] PHP array manipulation in tree structure

查看:136
本文介绍了在树形结构PHP数组操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想与结构如下图所示在 PHP

I want to format array with Tree structure like below in 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
        )

)

我不知道应该怎么做。

I have no idea how it should be done.

推荐答案

下面你是我的解决办法:

Here you are my solution:

<?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>

这篇关于在树形结构PHP数组操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆