如何在php中访问嵌套数组

时间:2013-12-29 09:16:03

标签: php mysql arrays nested

以下是一个名为“readcontent_categories”的mysql表

enter image description here

我想使用上表生成一个无限深度的树。例如,我想看看“英语”下的所有内容。然后它必须显示如下:

english
  |--------+Tens
              |-------+present
              |-------+past
              |-------+future

现在我尝试如下:

<?php
        include("config.php");

        $query = "SELECT * FROM readcontent_categories";
        $result = mysql_query($query);

        function getChildren($pid){
                $r = array();
                global $row, $result;
                while( $row = mysql_fetch_array($result) ){
                    if($row['parent_id'] == $pid)$r[$row['id']] = getChildren($row['id']);
                }

            return $r;
        }

        $final = getChildren(1);
        print_r($final);


    ?>

我在写这个吗?如何获得上述输出? 我得到的输出并不像预期的那样。我的输出如下:

Array ( [2] => Array ( [3] => Array ( ) ) ) 

但是如何获得上述输出?任何人都可以帮忙???

1 个答案:

答案 0 :(得分:0)

使用此自定义功能: 例如:

$items = array(
        array('id' => 42, 'parent_id' => 1),
        array('id' => 43, 'parent_id' => 42),
        array('id' => 1,  'parent_id' => 0),
);

function buildTree($items) {

    $childs = array();

    foreach($items as &$item) $childs[$item['parent_id']][] = &$item;
    unset($item);

    foreach($items as &$item) if (isset($childs[$item['id']]))
            $item['childs'] = $childs[$item['id']];

    return $childs[0];
}

$tree = buildTree($items);