Jei mano tūpa galva priimena, tai šitas ciklas per 6000 įrašų atveju padaro 18003000 iteracijų, o per 12000 - 72006000 Tai gaunasi, kad ~4 kartus ilgiau jį vykdys... Matyt set_time_limit() reikia daryti didelį. Gal greitesnis variantas būtų iš pradžių pasidarius masyvą tokį: $parents = array(); foreach($data as $d) { $parents[$d['parent_id']][$d['id']] = $d; } o tada jau function get_child($parents, $pid) { $tree = array(); foreach($parents[$pid] as $id => $d) { $tree[$d['id']] = $d; if (isset($parents[$id])) { $tree[$d['id']]['children'] = $this->get_child($parents, $id); } } } matyt yra dar paprastesnis variantas, sito kur parasiau netstavau, gali buti klaidu On Fri, 26 Feb 2010 19:02:42 +0200, bk <a@a.com> wrote: > sveiki, > > padariau savo pirmaja rekursija, kuri formuoja multidimensional > masyva.veikti tai lyg viskas veikia, ale pvz 6000 irasu suka ~20 > sekundziu, o 12000 - isvis nesulaukiau... > taigi, kas negerai su sia funckija? slieku savo jegomis daugiau nerandu, > bo neesu itin geras egzpertas :) > > <? > function get_child($data, $pid = null) { > $tree = array(); > foreach( $data as $key => $d ) { > if( $d['parent_id'] == $pid ) { > $tree[$d['id']] = array > ( > 'parent_id' => $d['parent_id'] > ); > unset($data[$key]); > $children = $this->get_child($data, $d['id']); > if($children) { > $tree[$d['id']]['children'] = $children; > } > } > } > return $tree; > } > ?> -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/