Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शामिल होने के साथ तालिका से डुप्लिकेट पंक्तियों को हटाएं

  2. बूलियन या टिन्यिनट भ्रम

  3. SQL त्रुटि:0, SQLState:08S01 संचार लिंक विफलता

  4. mysql क्रिएट टेबल के नाम पर php वेरिएबल का उपयोग करें

  5. JPQL में LIMIT क्लॉज विकल्प क्या है?