Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Create asymmetric tree array without recursion, good for categories with unlimited childs
- <?php
- $arr = array(
- array(
- 'id' => 1,
- 'cat' => 'cat1',
- 'parinte' => null,
- ),
- array(
- 'id' => 2,
- 'cat' => 'cat2',
- 'parinte' => 1,
- ),
- array(
- 'id' => 3,
- 'cat' => 'cat3',
- 'parinte' => 2,
- ),
- array(
- 'id' => 4,
- 'cat' => 'cat4',
- 'parinte' => 2,
- ),
- array(
- 'id' => 5,
- 'cat' => 'cat5',
- 'parinte' => 4,
- ),
- array(
- 'id' => 6,
- 'cat' => 'cat6',
- 'parinte' => 5,
- ),
- array(
- 'id' => 7,
- 'cat' => 'cat7',
- 'parinte' => null,
- ),
- array(
- 'id' => 8,
- 'cat' => 'cat8',
- 'parinte' => 7,
- ),
- array(
- 'id' => 9,
- 'cat' => 'cat9',
- 'parinte' => 6,
- ),
- array(
- 'id' => 10,
- 'cat' => 'cat10',
- 'parinte' => 9,
- ),
- array(
- 'id' => 11,
- 'cat' => 'cat10',
- 'parinte' => 4,
- ),
- array(
- 'id' => 12,
- 'cat' => 'cat12',
- 'parinte' => 8,
- ),
- array(
- 'id' => 13,
- 'cat' => 'cat13',
- 'parinte' => 12,
- ),
- );
- $arrFin = array();
- $syntax = '';
- foreach($arr as $r) {
- $name = 'syn' . $r['id'];
- $parentName = 'syn' . $r['parinte'];
- @$$name = $$parentName . ',' . $r['id'];
- //echo @$$name . "\n";
- if(!$r['parinte']) {
- $arrFin[$r['id']] = $r;
- $arrFin[$r['id']]['copii'] = array();
- }
- else {
- if( isset($arrFin[ $r['parinte'] ]) ) {
- $arrFin[$r['parinte']]['copii'][$r['id']] = $r;
- $arrFin[$r['parinte']]['copii'][$r['id']]['copii'] = array();
- }
- else {
- $newName = 'syn' . $r['parinte'];
- $traces = explode(',', $$newName);
- $elm = $r;
- $elm['copii'] = array();
- $arrSyntax = '['.implode('][\'copii\'][', $traces) . '][\'copii\']';
- $arrSyntax = substr($arrSyntax, 11);
- $phpSyntax = '$arrFin'.$arrSyntax.'[$elm[\'id\']] = $elm;';
- echo $arrSyntax . "\n";
- eval($phpSyntax);
- }
- }
- }
- print_r($arrFin); exit;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement