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

変更されたプレオーダーツリートラバーサルデータを配列に取得する

    このコードを試してみてください。 $resultsはデータベースの結果です。 $treeは返される配列です。

    function create_tree ($results) {
    
        $return = $results[0];
        array_shift($results);
    
        if ($return['lft'] + 1 == $return['rgt'])
            $return['leaf'] = true;
        else {
            foreach ($results as $key => $result) {
                if ($result['lft'] > $return['rgt']) //not a child
                    break;
                if ($rgt > $result['lft']) //not a top-level child
                    continue;
                $return['children'][] = create_tree(array_values($results));
                foreach ($results as $child_key => $child) {
                    if ($child['rgt'] < $result['rgt'])
                        unset($results[$child_key]);
                }
                $rgt = $result['rgt'];
                unset($results[$key]);
            }
        }
    
        unset($return['lft'],$return['rgt']);
        return $return;
    
    }
    $tree = create_tree($results);
    


    1. MySql-月の名前で並べ替え

    2. 'the'を無視するカスタムORDERBY

    3. 配列内のSQLLIKE%

    4. 最短時間で1,000万件のレコードを挿入するにはどうすればよいですか?