Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL group_concat के बराबर प्रेस्टो

  2. प्रपत्र फ़ील्ड और डेटाबेस तालिका फ़ील्ड के लिए समान नाम?

  3. MySQL रो 30153 GROUP_CONCAT () त्रुटि द्वारा काटा गया था

  4. PHP में छवि के लिए हेक्स को कवर करना?

  5. उच्चतम आईडी लौटाने वाला फ़ंक्शन कैसे बनाएं?