Mijn vraag
Ik kan redelijk programmeren, maar ik kom niet uit onderstaande dilemma:
Ik wil van een array waarin staat wat de parent is, uitzoeken wat het pad is (breadcrumb) en dit vervolgens voor elk item erbij opslaan. Oftewel terugherleiden of die parent ook een parent had etc, etc.
Het is om een boomstructuur te vullen met informatie wat kan relateren aan andere informatie, wat dan weer relateert aan andere informatie. Om dit eenvoudig voor de gebruiker te maken wil ik in een keuze menu laten zien wat het exact pad is voor je hem koppelt als 'ouder'.
Relevante software en hardware die ik gebruik
PHPStorm
Laravel 6
Wat ik al gevonden of geprobeerd heb
Ik ben al aan het stoeien geweest met recursieve functies, maar ik kom er niet uit. Ik hoop dat iemand mij op de goede richting kan helpen.
Ik kan redelijk programmeren, maar ik kom niet uit onderstaande dilemma:
Ik wil van een array waarin staat wat de parent is, uitzoeken wat het pad is (breadcrumb) en dit vervolgens voor elk item erbij opslaan. Oftewel terugherleiden of die parent ook een parent had etc, etc.
Het is om een boomstructuur te vullen met informatie wat kan relateren aan andere informatie, wat dan weer relateert aan andere informatie. Om dit eenvoudig voor de gebruiker te maken wil ik in een keuze menu laten zien wat het exact pad is voor je hem koppelt als 'ouder'.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| $array = [ [ 'id' => 1, 'Title' => 'Main Menu 1', 'parent' => null ], [ 'id' => 2, 'Title' => 'Main Menu 2', 'parent' => null ], [ 'id' => 3, 'Title' => 'Sub menu 1', 'parent' => 2 ], [ 'id' => 4, 'Title' => 'Sub menu 2', 'parent' => 3 ], [ 'id' => 5, 'Title' => 'Main Menu 3', 'parent' => 3 ] ]; /* Expected behaviour: [ 'id' => 1, 'Title' => 'Main Menu 1', 'breadcrumb' => 'Main Menu 1', 'parent' => null ], [ 'id' => 2, 'Title' => 'Main Menu 2', 'breadcrumb' => 'Main Menu 2', 'parent' => null ], [ 'id' => 3, 'Title' => 'Sub menu 1', 'breadcrumb' => 'Main Menu 2 \ Sub menu 1', 'parent' => 2 ], [ 'id' => 4, 'Title' => 'Sub menu 2', 'breadcrumb' => 'Main Menu 2 \ Sub menu 1 \ Sub menu 2', 'parent' => 3 ], [ 'id' => 5, 'Title' => 'Main Menu 3', 'breadcrumb' => 'Main Menu 2 \ Sub menu 1 \ Sub menu 3', 'parent' => 3 ] */ |
Relevante software en hardware die ik gebruik
PHPStorm
Laravel 6
Wat ik al gevonden of geprobeerd heb
Ik ben al aan het stoeien geweest met recursieve functies, maar ik kom er niet uit. Ik hoop dat iemand mij op de goede richting kan helpen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| public function getTopicsEnum(Request $request) { $helpTopics = HelpTopics::get(); $array = []; foreach ($helpTopics as $helpTopic) { $topic['Help_TopicID'] = $helpTopic->Help_TopicID; $topic['Ouder'] = $helpTopic->Ouder; $topic['Titel'] = $helpTopic->Titel; $topic['Breadcrumb'] = $helpTopic->parent ? $this->getBreadcrumbForTopic($helpTopic, $helpTopics) : null; $array[] = $topic; } dd($array); } private function getBreadcrumbForTopic($helpTopic, Collection $helpTopics, $breadCrumb = null) { $foundTopic = $helpTopics->where('Help_TopicID', $helpTopic->Help_TopicID)->first(); if (!$foundTopic) { return null; } if (is_null($breadCrumb)) { $breadCrumb = $foundTopic->Titel; } else { $breadCrumb .= ' / ' . $foundTopic->Titel; } if ($foundTopic->parent) { $breadCrumb = $this->getBreadcrumbForTopic($foundTopic, $helpTopics, $breadCrumb); } return $breadCrumb; } |
[Voor 228% gewijzigd door MueR op 24-12-2021 23:31]