sql >> データベース >  >> RDS >> Mysql

この結果セット(トラバーサルモデルでデータベースに保存されているネストされたカテゴリ)から配列を作成するにはどうすればよいですか?

    ああ、ついに参照が便利なもの:

    <?php
    $tree = array(
        array('Cat 1', 'depth' => 0),
        array('Cat 2', 'depth' => 1),
        array('Cat 3', 'depth' => 1),
        array('Cat 4', 'depth' => 2),
        array('Cat 5', 'depth' => 1),
        array('Cat 6', 'depth' => 2),
        array('Cat 7', 'depth' => 3),
        array('Cat 8', 'depth' => 1)
    );
    //same as before
    $currDepth = -1;
    
    //initilialize result
    $result = array();
    
    //create path structure for depths
    $path = array();
    
    //create 'root' node
    $olditem = array('children'=> &$result);
    
    
    foreach($tree as $item){
        if($item['depth'] > $currDepth){
            //remove possible old reference (old depth of other branch
            if(isset($path[$item['depth']])) unset($path[$item['depth']]);
    
            //make sure we have an array entry
            if(!isset($olditem['children'])) $olditem['children'] = array();
    
            //acquire target
            $path[$item['depth']] = &$olditem['children'];
        }
        if($item['depth'] != $currDepth) unset($olditem);
        //set correct target
        $currDepth = $item['depth'];
        //add item
        $path[$currDepth][] = &$item;
        //copy & remove reference
        $olditem = &$item;
        unset($item);
    }
    //always nice to clean up reference bombs:
    unset($path);
    unset($olditem);
    
    var_dump($result);
    ?>
    



    1. 複雑なSQL削除クエリに頭を悩ませる

    2. OracleでのDapperの使用

    3. 同じ構造の2つのMySQLデータベースをマージする方法

    4. データベースから検索したデータをdivに表示したい検索ページを作成したいですか?