php rekursiv funktion behöver hjälp
hej behöver hjälp!
Har en trädstruktur i en db
varje nod pekar på sin förälder top noden pekar på null.
det jag vill göra är att ange en nod och hitta alla dess barn nedåt i strukturen.
Suttit ett tag nu och funderat, varför kommer inte nod 84 med i resultat arrayen?
Någon snäll själ som kan visa mig vägen!?
utdrag ur db trädtabell
id parent_id name
59 10 3 58 Team Luleå
82 10 4 59 tester
83 10 4 59 tester2
84 10 5 82 tester 3
foreach ($ug->GetSiteMappingArray() as $mapping){
array_push($objUserSiteMaps,$mapping);
_p( "(" . $mapping->Id . ")" . $mapping->Name); echo "<br>";
$arrNodes = getChildMapIds($mapping->Id,array($mapping->Id));
print_r ($arrNodes); echo "<br>";
}
function getChildMapIds($mapId,$value = array()){
//söker i trädet och returnerar en array av alla noder vars förälder är $mapId
$objSiteMapChildren = SiteMapping::QueryArray(QQ::AndCondition(qq::Equal(QQN::SiteMapping()->ParentId,$mapId)));
foreach($objSiteMapChildren as $child){
echo "found child for [".$mapId."]->child[".$child->Id."]<br>";
echo "adding child[".$child->Id."] to array<br>";
array_push($value,$child->Id);
//if(!empty($objSiteMapChildren)){
getChildMapIds($child->Id,$value);
//}
}
return $value;
}
output
USERGROUP id:1 :AF - Luleå
(59)Team Luleå
found child for [59]->child[82]
adding child[82] to array
found child for [82]->child[84] <- här hittas 84
adding child[84] to array
found child for [59]->child[83]
adding child[83] to array
Array ( [0] => 59 [1] => 82 [2] => 83 ) <-WTF? varför kommer inte 84 med?
USERGROUP id:2 :AF - Umeå
(60)Team Umeå
Array ( [0] => 60 )
USERGROUP id:3 :AF - Östersund
(61)Team Östersund
Array ( [0] => 61 )
USERGROUP id:4 :AF - Falun
(62)Team Falun
Array ( [0] => 62 )
USERGROUP id:5 :AF - Karlstad
(63)Team Karlstad
Array ( [0] => 63 )
USERGROUP id:6 :AF - Stockholm
(64)Team Stockholm
Array ( [0] => 64 )
USERGROUP id:7 :AF - Göteborg
(65)Team Göteborg
Array ( [0] => 65 )
USERGROUP id:8 :AF - Växjö
(66)Team Växjö
Array ( [0] => 66 )
USERGROUP id:9 :AF - Malmö
(67)Team Malmö
Array ( [0] => 67 )