Momenteel heb ik twee verschillende multidimensionale arrays die ik met elkaar wil combineren. De eerste array betreft een volledige lijst items, terwijl de tweede array een lijst is van enkele items die voorkomen in de eerste array, maar waarvan enkele waarden verschillend zijn.
De bedoeling is om de twee arrays met elkaar te combineren waarbij de eerste array geüpdatet wordt met de tweede array en dat op de juiste locatie.
Een concreet voorbeeld:
Array 1:
De tweede array:
Met de functie array_replace_recursive() heb ik getracht om de arrays met elkaar te combineren. Het combineren werkt, maar de verkeerde gegevens worden geüpdatet. De functie baseert zich op de key van de onderliggende array waardoor je volgende array krijgt:
Hier is item [0] gewijzigd van de originele lijst. De bedoeling is dat de functie gebruik zou maken van de maat_id binnen elke onderliggende array, maar daarvoor lijkt de functie niet geschikt. Hoe kan ik dit het beste oplossen?
Optie lijkt me om te proberen de keys van de array ([0], [1], [2], ...) te vervangen door de maat_id. Geen idee hoe ik eraan begin, maar dat zal vast wel te vinden zijn (array_walk_recursive() ?).
Is er een andere optie, betere optie? Het had mooi geweest als de array_replace_recursive() zich kon baseren op een onderliggende waarde in plaats van de gewone keys...
De bedoeling is om de twee arrays met elkaar te combineren waarbij de eerste array geüpdatet wordt met de tweede array en dat op de juiste locatie.
Een concreet voorbeeld:
Array 1:
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
| array(3) { [0]=> array(10) { ["maat_id"]=> string(1) "1" ["cat_id"]=> string(1) "1" ["maatregel"]=> string(20) "Algemene maatregel 1" ["L1"]=> int(0) ["L2"]=> int(0) ["L3"]=> int(0) ["L4"]=> int(0) ["L5"]=> int(0) ["L6"]=> int(0) ["BIS"]=> int(0) } [1]=> array(10) { ["maat_id"]=> string(1) "2" ["cat_id"]=> string(1) "1" ["maatregel"]=> string(20) "Algemene maatregel 2" ["L1"]=> int(0) ["L2"]=> int(0) ["L3"]=> int(0) ["L4"]=> int(0) ["L5"]=> int(0) ["L6"]=> int(0) ["BIS"]=> int(0) } [2]=> array(10) { ["maat_id"]=> string(1) "3" ["cat_id"]=> string(1) "2" ["maatregel"]=> string(23) "Taalkundige maatregel 1" ["L1"]=> int(0) ["L2"]=> int(0) ["L3"]=> int(0) ["L4"]=> int(0) ["L5"]=> int(0) ["L6"]=> int(0) ["BIS"]=> int(0) } } |
De tweede array:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| array(3) { [0]=> array(10) { ["maat_id"]=> string(1) "3" ["cat_id"]=> string(1) "2" ["maatregel"]=> string(23) "Taalkundige maatregel 1" ["L1"]=> int(0) ["L2"]=> int(0) ["L3"]=> int(1) ["L4"]=> int(1) ["L5"]=> int(0) ["L6"]=> int(1) ["BIS"]=> int(0) } } |
Met de functie array_replace_recursive() heb ik getracht om de arrays met elkaar te combineren. Het combineren werkt, maar de verkeerde gegevens worden geüpdatet. De functie baseert zich op de key van de onderliggende array waardoor je volgende array krijgt:
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
| array(3) { [0]=> array(10) { ["maat_id"]=> string(1) "3" ["cat_id"]=> string(1) "2" ["maatregel"]=> string(23) "Taalkundige maatregel 1" ["L1"]=> int(0) ["L2"]=> int(0) ["L3"]=> int(1) ["L4"]=> int(1) ["L5"]=> int(0) ["L6"]=> int(1) ["BIS"]=> int(0) } [1]=> array(10) { ["maat_id"]=> string(1) "2" ["cat_id"]=> string(1) "1" ["maatregel"]=> string(20) "Algemene maatregel 2" ["L1"]=> int(0) ["L2"]=> int(0) ["L3"]=> int(0) ["L4"]=> int(0) ["L5"]=> int(0) ["L6"]=> int(0) ["BIS"]=> int(0) } [2]=> array(10) { ["maat_id"]=> string(1) "3" ["cat_id"]=> string(1) "2" ["maatregel"]=> string(23) "Taalkundige maatregel 1" ["L1"]=> int(0) ["L2"]=> int(0) ["L3"]=> int(0) ["L4"]=> int(0) ["L5"]=> int(0) ["L6"]=> int(0) ["BIS"]=> int(0) } } |
Hier is item [0] gewijzigd van de originele lijst. De bedoeling is dat de functie gebruik zou maken van de maat_id binnen elke onderliggende array, maar daarvoor lijkt de functie niet geschikt. Hoe kan ik dit het beste oplossen?
Optie lijkt me om te proberen de keys van de array ([0], [1], [2], ...) te vervangen door de maat_id. Geen idee hoe ik eraan begin, maar dat zal vast wel te vinden zijn (array_walk_recursive() ?).
Is er een andere optie, betere optie? Het had mooi geweest als de array_replace_recursive() zich kon baseren op een onderliggende waarde in plaats van de gewone keys...