Zadejte hledaný výraz...

Ako vytvorit rekurzivne stromovu strukturu?

node
verified
rating uzivatele
(5 hodnocení)
25. 7. 2017 21:36:09
Ahojte,
mam pole ktore ma napriklad takuto sturkturu:
],
'b' => ,
'c' => ],
'ba' => ],
'bb' => ],
'bba' => ]
]
a potrebujem dostat toto:
,
'b' =>
'ba' =>
],
'bb' =>
'bba' =>
]
],
],
'c' =>
],
],
]
skratka velmi primitivna zalezitost, akurat ze tu nemam napriklad informaciu o hlbke takze to musim riesit rekurzivne a uz je vecer a mne to uz nemysli.
Ako by ste napisali rekurzivnu funkciu?
...samozrejme tie elementy v tom poli najskor budu rozhadzane v roznom poradi.
25. 7. 2017 21:36:09
https://webtrh.cz/diskuse/ako-vytvorit-rekurzivne-stromovu-strukturu/#reply1292019
Live demo: https://ideone.com/jT5ww7
26. 7. 2017 00:56:24
https://webtrh.cz/diskuse/ako-vytvorit-rekurzivne-stromovu-strukturu/#reply1292018
node
verified
rating uzivatele
(5 hodnocení)
26. 7. 2017 11:31:47
Uff, tak som sa k tomu konecne dopracoval.
public function processEmbeddedRegionGroups(array $groups, array &$region_element) {
foreach ($groups AS $group) {
${$group->getUuid() . '_group'} = &$region_element;
${$group->getUuid() . '_parent'} = &$region_element;
}
foreach ($groups AS $group) {
foreach ($group->getPanes() AS $pane_uuid) {
// Only process groups.
if (isset($groups)) {
// Move the group into parent group.
${$group->getUuid() . '_group'} = ${$pane_uuid . '_group'};
// Unset the group from former parent.
unset(${$pane_uuid . '_parent'});
// Set new parent.
${$pane_uuid . '_parent'} = &${$group->getUuid() . '_group'};
// Update group reference.
${$pane_uuid . '_group'} = &${$group->getUuid() . '_group'};
}
}
}
}
Vsetko su referencie takze by nemal byt problem s vykonom ani pri velkych datasetoch, co nie je moja situacia, len fyi.
26. 7. 2017 11:31:47
https://webtrh.cz/diskuse/ako-vytvorit-rekurzivne-stromovu-strukturu/#reply1292017
Pro odpověď se přihlašte.
Přihlásit