Advertisement
Guest User

Create asymmetric tree array without recursion, good for cat

a guest
Oct 31st, 2014
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.74 KB | None | 0 0
  1. Create asymmetric tree array without recursion, good for categories with unlimited childs
  2.  
  3. <?php
  4. $arr = array(
  5.     array(
  6.         'id' => 1,
  7.         'cat' => 'cat1',
  8.         'parinte' => null,
  9.     ),
  10.            
  11.     array(
  12.         'id' => 2,
  13.         'cat' => 'cat2',
  14.         'parinte' => 1,
  15.     ),  
  16.      
  17.      
  18.       array(
  19.         'id' => 3,
  20.         'cat' => 'cat3',
  21.         'parinte' => 2,
  22.     ),  
  23.      
  24.       array(
  25.         'id' => 4,
  26.         'cat' => 'cat4',
  27.         'parinte' => 2,
  28.     ),  
  29.      
  30.       array(
  31.         'id' => 5,
  32.         'cat' => 'cat5',
  33.         'parinte' => 4,
  34.     ),  
  35.      
  36.       array(
  37.         'id' => 6,
  38.         'cat' => 'cat6',
  39.         'parinte' => 5,
  40.     ),  
  41.      
  42.      
  43.        array(
  44.         'id' => 7,
  45.         'cat' => 'cat7',
  46.         'parinte' => null,
  47.     ),
  48.      
  49.      
  50.       array(
  51.         'id' => 8,
  52.         'cat' => 'cat8',
  53.         'parinte' => 7,
  54.     ),
  55.      
  56.      
  57.       array(
  58.         'id' => 9,
  59.         'cat' => 'cat9',
  60.         'parinte' => 6,
  61.     ),
  62.      
  63.       array(
  64.         'id' => 10,
  65.         'cat' => 'cat10',
  66.         'parinte' => 9,
  67.     ),
  68.      
  69.       array(
  70.         'id' => 11,
  71.         'cat' => 'cat10',
  72.         'parinte' => 4,
  73.     ),
  74.      
  75.      
  76.        array(
  77.         'id' => 12,
  78.         'cat' => 'cat12',
  79.         'parinte' => 8,
  80.     ),
  81.      
  82.      
  83.       array(
  84.         'id' => 13,
  85.         'cat' => 'cat13',
  86.         'parinte' => 12,
  87.     ),
  88.      
  89.   );
  90.  
  91.  
  92. $arrFin = array();
  93.  
  94. $syntax = '';
  95. foreach($arr as $r) {
  96.    
  97.     $name = 'syn' . $r['id'];
  98.     $parentName = 'syn' . $r['parinte'];
  99.     @$$name = $$parentName . ',' . $r['id'];
  100.    
  101.     //echo @$$name . "\n";
  102.      
  103.     if(!$r['parinte']) {
  104.         $arrFin[$r['id']] = $r;
  105.         $arrFin[$r['id']]['copii'] = array();
  106.        
  107.        
  108.     }
  109.     else {
  110.         if( isset($arrFin[ $r['parinte'] ]) ) {
  111.             $arrFin[$r['parinte']]['copii'][$r['id']] = $r;
  112.             $arrFin[$r['parinte']]['copii'][$r['id']]['copii'] = array();
  113.  
  114.         }
  115.         else {      
  116.             $newName = 'syn' . $r['parinte'];
  117.            
  118.             $traces = explode(',', $$newName);
  119.            
  120.            
  121.             $elm = $r;
  122.             $elm['copii'] = array();
  123.            
  124.             $arrSyntax = '['.implode('][\'copii\'][', $traces) . '][\'copii\']';                                              
  125.             $arrSyntax = substr($arrSyntax, 11);
  126.             $phpSyntax = '$arrFin'.$arrSyntax.'[$elm[\'id\']] = $elm;';
  127.                        
  128.             echo $arrSyntax . "\n";
  129.            
  130.            
  131.             eval($phpSyntax);                        
  132.         }
  133.     }
  134.    
  135.    
  136.                
  137. }  
  138.  
  139. print_r($arrFin); exit;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement