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

MYSQL親子同じテーブル。多次元配列としての親内のPHPネストの子

    参照、順序は重要ではないという利点があります(子ノードは親ノードの前に来ることができます):

     $tree = array('NULL' => array('children' => array()));
     foreach($array as $item){
        if(isset($tree[$item['id']])){
           $tree[$item['id']] = array_merge($tree[$item['id']],$item);
        } else {
           $tree[$item['id']] = $item;
        }
    
        $parentid = is_null($item['id_parent']) ? 'NULL' : $item['id_parent'];
        if(!isset($tree[$parentid])) $tree[$parentid] = array('children' => array());
        //this & is where the magic happens: any alteration to $tree[$item['id']
        //  will reflect in the item $tree[$parentid]['children'] as they are the same
        //  variable. For instance, adding a child to $tree[$item['id']]['children]
        //  will be seen in 
        //  $tree[$parentid]['children'][<whatever index $item['id'] has>]['children]
        $tree[$parentid]['children'][] = &$tree[$item['id']];
     }
     $result = $tree['NULL']['children'];
     //always unset references
     unset($tree);
    



    1. SQLServerデータベースの列を含むすべてのデフォルトの制約を一覧表示する方法-SQLServer/TSQLチュートリアルパート92

    2. MySQLの「NOTIN」クエリ3テーブル

    3. MySQLWorkbenchの代替-ClusterControlデータベースのユーザー管理

    4. OracleクライアントORA-12541:TNS:リスナーなし