Bitişiklik listesi ekran için özyinelemeli PHP işlevi

0 Cevap php

Ben şöyle bir DB var:

id  text           parent
1   Parent 1        0   
2   Child of 1      1   
3   Sibling         1   
4   Another Parent  0 
5   A first child   4

Yani benim anne listeleyen bir ağaç yapısı yakalamak için çalışıyorum. Ben başka bir seçenek (iç içe setleri sanırım?) Farkında değilim ama şimdi bu sopa ile gidiyorum. Ben şimdi DB dışında ve PHP iç içe bir dizi yapıya verileri almak için çalışıyorum. Ben böyle bir işlevi vardır:

class Data_Manager
{   
    public $connection = '';
    public $collection = array();

    function __construct() {
        $this->connection = mysql_connect('localhost', 'root', 'root');
        $thisTable = mysql_select_db('data');
            // error handling truncated
    }


    function get_all() {
        $arr = &$this->collection;

        $this->recurseTree('', 0, $arr);
        var_dump($arr);
    }

    function recurseTree($parent, $level, $arrayNode) {
        $result = mysql_query('SELECT * FROM tasks WHERE parent="' . $parent . '";');

        while ($row = mysql_fetch_array($result)) {
            $row['children'] = array(); //where I'd like to put the kids    
            $arrayNode[$row['id']]= $row;
            $this->recurseTree($row['id'], $level+1, $arrayNode[$row['id']]);
        }
    }
}

Yani ne ile gelmek istiyorum birleşmeli diziler içe ağacında bir çeşit, ama bunu yapmak için oldukça nasıl anlamaya olamaz. Hiçbir şey geçmek diziye yazılı olması, ve ben tür özyinelemede kendimi izini kaybediyorum görünüyor. Herkes gibi bir şey neden olur, bu son iyiye bana yardımcı olabilir:

[
Parent1 => [
               children => ['Child of 1', 'Sibling']
           ],
AnotherParent => [
                     children => ['First Child']
                 ]
]

Ve ben çıkışının belirli bir form ile daha az endişeleniyorum. JSON dönüşmüş olacak ve ben henüz istemci tarafı işleyicisi yazı ile ele değil, bu yüzden tam yapısı üzerinde hiçbir endişe.

Teşekkürler!

0 Cevap