Index waarden bepalen in een stdclass array
Code (php)
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
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
<?php
$grouped = array();
foreach($arreventid as $object)
{
if(!array_key_exists($object->resource->group, $grouped))
{
$newObject = new stdClass();
$newObject->TYPE = $object->resource->group;
$newObject->ITEMS = array();
$grouped[$object->resource->group] = $newObject;
}
$taskObject = new stdClass();
$taskObject->ID = $object->resource->id;
$taskObject->AANTAL = $object->number;
$taskObject->OMSCHRIJVING = $object->resource->name;
$grouped[$object->resource->group]->ITEMS[] = $taskObject;
//
}
print_r($grouped);
?>
$grouped = array();
foreach($arreventid as $object)
{
if(!array_key_exists($object->resource->group, $grouped))
{
$newObject = new stdClass();
$newObject->TYPE = $object->resource->group;
$newObject->ITEMS = array();
$grouped[$object->resource->group] = $newObject;
}
$taskObject = new stdClass();
$taskObject->ID = $object->resource->id;
$taskObject->AANTAL = $object->number;
$taskObject->OMSCHRIJVING = $object->resource->name;
$grouped[$object->resource->group]->ITEMS[] = $taskObject;
//
}
print_r($grouped);
?>
wat ik krijg als output is volgende
Code (php)
1
Array ( [0] => stdClass Object ( [TYPE] => Locaties [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 646550785-1431455652 [AANTAL] => 1 [OMSCHRIJVING] => Grote Post ) ) ) [1] => stdClass Object ( [TYPE] => Meubilair [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 4257054209-1454325662 [AANTAL] => 10 [OMSCHRIJVING] => Rode stoel ) [1] => stdClass Object ( [ID] => 90384641-1433314305 [AANTAL] => 20 [OMSCHRIJVING] => Zwarte Tafels ) ) ) [2] => stdClass Object ( [TYPE] => Extra Techniek [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 2515818753-1444912930 [AANTAL] => 1 [OMSCHRIJVING] => Flatscreen ) [1] => stdClass Object ( [ID] => 2477062913-1454412360 [AANTAL] => 1 [OMSCHRIJVING] => Micro ) ) ) [3] => stdClass Object ( [TYPE] => Exploitatie [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 3723659521-1482508978 [AANTAL] => 10 [OMSCHRIJVING] => Handdoeken ) ) ) [4] => stdClass Object ( [TYPE] => Catering [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 812009217-1433332145 [AANTAL] => 8 [OMSCHRIJVING] => standaard lunch ) [1] => stdClass Object ( [ID] => 2413223681-1450950019 [AANTAL] => 5 [OMSCHRIJVING] => lunch eigen personeel ) ) ) [5] => stdClass Object ( [TYPE] => Diverse Ko1 [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 7340779521-1460472740 [AANTAL] => 1 [OMSCHRIJVING] => forfait receptie premire ) ) ) [6] => stdClass Object ( [TYPE] => Overnachting [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 822193921-1433332289 [AANTAL] => 1 [OMSCHRIJVING] => single kamer ) [1] => stdClass Object ( [ID] => 826616577-1433332313 [AANTAL] => 1 [OMSCHRIJVING] => twin kamer ) [2] => stdClass Object ( [ID] => 823746049-1433332299 [AANTAL] => 1 [OMSCHRIJVING] => double kamer ) ) ) [7] => stdClass Object ( [TYPE] => Team DGP [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 569591041-1432209160 [AANTAL] => 1 [OMSCHRIJVING] => Sara Vanderieck ) [1] => stdClass Object ( [ID] => 75528705-1431953348 [AANTAL] => 1 [OMSCHRIJVING] => Helmut Willems ) ) ) [8] => stdClass Object ( [TYPE] => Extra Personeel [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 2552306689-1451385397 [AANTAL] => 1 [OMSCHRIJVING] => DGP technieker ) [1] => stdClass Object ( [ID] => 2452153345-1498727302 [AANTAL] => 1 [OMSCHRIJVING] => geluidstechnieker ) [2] => stdClass Object ( [ID] => 1048593153-1445504057 [AANTAL] => 1 [OMSCHRIJVING] => Jelle Van Meerbergen ) [3] => stdClass Object ( [ID] => 1050209025-1445504091 [AANTAL] => 1 [OMSCHRIJVING] => Toon Soete ) ) ) [9] => stdClass Object ( [TYPE] => Vrijwilligerswerking [ITEMS] => Array ( [0] => stdClass Object ( [ID] => 1365497601-1457356321 [AANTAL] => 1 [OMSCHRIJVING] => Artiestenonthaal ) [1] => stdClass Object ( [ID] => 3023081473-1470831288 [AANTAL] => 1 [OMSCHRIJVING] => Ticketcontrole + zaalwacht ) ) ) )
waar ik echter mijn tanden op stuk bijt is om de Indexes(getallen) te veranderen in values
Vb de hoofdindex [0,1,2...]. zou ik graag hebben dat het de variabele [$object->resource->group] wordt
iemand een idee hoe aan te pakken of waar ik dit in de code moet definiëren ?
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 30/10/2017 22:32:57 door - Ariën -
en doe eens
En plak de uitkomst daarvan eens in je openingspost want dat zou wel wat makkelijker leesbaar zijn.
Gewijzigd op 30/10/2017 21:16:16 door Frank Nietbelangrijk
Deze komt uit een api aanroep via curl en wordt idd aangeroepen via json_decode
Lees mijn bovenstaande post nog eens. Had nog wat extra dingetjes er bij gezet :-)
ik zou graag de output van de oorspronkelijke willen geven (output van de API °maar hier staan massa gegevens in die niet relevant zijn en ook een beetje vertrouwelijk :-(
hieronder zie je de gecensureerde versie :-)
enkel van de eerste [0] , de andere hebben gelijke opbouw
Code (php)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
Array
(
[0] => Array
(
[url] => xxxxxxxx
[id] => 3xxxxxxxx
[_type] => xxxxxxxx
[number] => 1
[resource] => Array
(
[url] => xxxxxxxx
[id] => xxxxxxxxx
[resourcetype] => location
[name] => xxxxxxxx
[group] => xxxxxxx
[roles] => Array
(
)
[_type] => location
)
[children] => Array
(
[0] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[owner] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
)
[owningteam] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
)
[owninggroup] => Array
(
[url] => hxxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
)
[_type] => resourcebooking
[number] => 1
[resource] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[resourcetype] => location
[name] => xxxxxxxxx
[group] => Locaties
[roles] => Array
(
)
[_type] => location
)
[start] => xxxxxxxxx
[end] => xxxxxxxxx
[event] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
[_type] => xxxxxxxxx
)
[role] =>
)
)
[event] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
[_type] => xxxxxxxxx
)
)
[1] => Array
[\code]
enz . . . . .
(
[0] => Array
(
[url] => xxxxxxxx
[id] => 3xxxxxxxx
[_type] => xxxxxxxx
[number] => 1
[resource] => Array
(
[url] => xxxxxxxx
[id] => xxxxxxxxx
[resourcetype] => location
[name] => xxxxxxxx
[group] => xxxxxxx
[roles] => Array
(
)
[_type] => location
)
[children] => Array
(
[0] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[owner] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
)
[owningteam] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
)
[owninggroup] => Array
(
[url] => hxxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
)
[_type] => resourcebooking
[number] => 1
[resource] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[resourcetype] => location
[name] => xxxxxxxxx
[group] => Locaties
[roles] => Array
(
)
[_type] => location
)
[start] => xxxxxxxxx
[end] => xxxxxxxxx
[event] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
[_type] => xxxxxxxxx
)
[role] =>
)
)
[event] => Array
(
[url] => xxxxxxxxx
[id] => xxxxxxxxx
[name] => xxxxxxxxx
[_type] => xxxxxxxxx
)
)
[1] => Array
[\code]
enz . . . . .
Gewijzigd op 30/10/2017 21:36:27 door helmut Achternaam
Toevoeging op 30/10/2017 21:37:44:
En wat zou je aan het eind willen overhouden? (voorbeeldje)
Toevoeging op 30/10/2017 21:38:17:
Edit:
een stuk beter leesbaar vindt je niet ;-)
Toevoeging op 30/10/2017 22:07:30:
De buitenste lus kan je in ieder geval met een foreach doorlopen:
Dan kun je de elementen er onder benaderen op deze manier
$object['resource'] is echter een associatieve array. Die zou je dan kunnen benaderen met:
Voor $object['children'] geldt dat dit ook weer een normale (numerieke) array is. dus die loop je ook door met een foreach. Eindresultaat wordt dan iets als:
een stuk beter leesbaar vindt je niet ;-)
Toevoeging op 30/10/2017 22:07:30:
De buitenste lus kan je in ieder geval met een foreach doorlopen:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
foreach($arreventid as $object) // <-- gebruik ipv object beter een naam die ons wat meer vertelt...
{
// ...
}
?>
foreach($arreventid as $object) // <-- gebruik ipv object beter een naam die ons wat meer vertelt...
{
// ...
}
?>
Dan kun je de elementen er onder benaderen op deze manier
Code (php)
$object['resource'] is echter een associatieve array. Die zou je dan kunnen benaderen met:
Voor $object['children'] geldt dat dit ook weer een normale (numerieke) array is. dus die loop je ook door met een foreach. Eindresultaat wordt dan iets als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
foreach($arreventid as $object)
{
echo $object['url'] . '<br>';
echo $object['id'] . '<br>';
// etc
echo $object['resource']['url'] . '<br>';
echo $object['resource']['id'] . '<br>';
// etc
foreach($object['children'] as $child)
{
echo $child['url'] . '<br>';
echo $child['id'] . '<br>';
//etc
}
echo '<br><br>';
}
?>
foreach($arreventid as $object)
{
echo $object['url'] . '<br>';
echo $object['id'] . '<br>';
// etc
echo $object['resource']['url'] . '<br>';
echo $object['resource']['id'] . '<br>';
// etc
foreach($object['children'] as $child)
{
echo $child['url'] . '<br>';
echo $child['id'] . '<br>';
//etc
}
echo '<br><br>';
}
?>
Gewijzigd op 31/10/2017 01:15:30 door Frank Nietbelangrijk
De initiele code groepeert de oorspronkelijke array naar een nieuwe array op Group.
De bedoeling is om de Indexnames te veranderen door de Groupwaarde (dus de cijfers weg , maar veranderen door woorden).
Zo kan ik later in mijn code direct de array aanroepen welke ik wens zonder telkens foreach te gebruiken en vergelijkingen uit te voeren.
de output zou iets moeten zijn zoals volgende
Code (php)
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
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
Array
(
[waardeuitgroup] => Array
(
[0] => Array
(
[number] => 1
[name] => xxxxxxxx
)
[1] => Array
(
[number] => 10
[name] => xxxxxxxx
)
)
[waardeuitgroup2] => Array
(
[0] => Array
(
[number] => 4
[name] => xxxxxxxx
)
[1] => Array
(
[number] => 20
[name] => xxxxxxxx
)
)
)
enz . . .
(
[waardeuitgroup] => Array
(
[0] => Array
(
[number] => 1
[name] => xxxxxxxx
)
[1] => Array
(
[number] => 10
[name] => xxxxxxxx
)
)
[waardeuitgroup2] => Array
(
[0] => Array
(
[number] => 4
[name] => xxxxxxxx
)
[1] => Array
(
[number] => 20
[name] => xxxxxxxx
)
)
)
enz . . .
Gewijzigd op 31/10/2017 09:07:17 door helmut Achternaam
Code (php)
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
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
zoiets inderdaad maar Owner en ownergroup is telkenmale de value uit. [group] => Locaties
dus vb owner moet Locaties zijn en ownergroup moet vb iets anders zijn
Het ding is als ik de gewone output heb van de api , dan krijg ik 15 waarden ( van 1 tot 15)
ik wil deze hergroepeert zien op het veld [group] met daaronder de verschillende waarden (mag numeriek zijn)
zo kan ik later dan vb voor een bepaalde gekende groep een for each doen
ik kijk morgen verder en probeer anders zelf te herscrhrijven
Thomas van den Heuvel op 31/10/2017 19:44:27:
Dus. Je wilt on-the-fly data herstructureren uit een externe bron, waarbij je groepeert op een element-waarde. Dit zou niet zo moeilijk moeten zijn? Je hebt een attribuut (zeg X) op grond waarvan je wilt groeperen. Wat je achtereenvolgens doet:
Dit is eigenlijk wat ik nodig heb
wat ik nu gedaan heb is dit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$grouped = array();
foreach($arreventid as $object)
{
$data[$object->resource->group][] =$object->resource->name;
$data[$object->resource->group][][][aantal] =$object->number;
}
echo '<pre>'.print_r($data, true).'</pre>';
?>
foreach($arreventid as $object)
{
$data[$object->resource->group][] =$object->resource->name;
$data[$object->resource->group][][][aantal] =$object->number;
}
echo '<pre>'.print_r($data, true).'</pre>';
?>
dan krijg ik dit
Code (php)
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
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
Array
(
[Locaties] => Array
(
[0] => Grote Post
[1] => Array
(
[0] => Array
(
[aantal] => 1
)
)
)
[Meubilair] => Array
(
[0] => Rode stoel
[1] => Array
(
[0] => Array
(
[aantal] => 10
)
)
[2] => Zwarte Tafels
[3] => Array
(
[0] => Array
(
[aantal] => 20
)
)
)
. . . . .
(
[Locaties] => Array
(
[0] => Grote Post
[1] => Array
(
[0] => Array
(
[aantal] => 1
)
)
)
[Meubilair] => Array
(
[0] => Rode stoel
[1] => Array
(
[0] => Array
(
[aantal] => 10
)
)
[2] => Zwarte Tafels
[3] => Array
(
[0] => Array
(
[aantal] => 20
)
)
)
. . . . .
maar eigenlijk moet ik dit hebben
Code (php)
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
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
Array
(
[Locaties] => Array
(
[0]
(
[Naam] => Grote Post
[aantal] => 1
)
)
[Meubilair] => Array
(
[0]
(
[Naam] => Rode Stoel
[aantal] => 15
)
[1]
(
[Naam] => Zwarte tafels
[aantal] => 20
)
)
(
[Locaties] => Array
(
[0]
(
[Naam] => Grote Post
[aantal] => 1
)
)
[Meubilair] => Array
(
[0]
(
[Naam] => Rode Stoel
[aantal] => 15
)
[1]
(
[Naam] => Zwarte tafels
[aantal] => 20
)
)
ik voel dat ik de buurt ben van wat ik wil maar nog niet helemaal , iemand ??
EDIT :
en gevonden
heb dit gerbuikt
Code (php)
1
$data[$object->resource->group][] =array("naam" => $object->resource->name,"aantal" => $object->number,);
Gewijzigd op 07/11/2017 10:10:23 door helmut Achternaam
Dan zou je moeten zien dat er iets niet klopt in je code:
Vervolgens zul je een dubbele lege bracket nooit nodig hebben. $data[$object->resource->group][][][aantal] is dus klinkklare onzin. Probeer het volgende voor de Locaties:
Code (php)
Toevoeging op 07/11/2017 20:39:36:
een lege bracket maakt een nieuwe item aan in een array en nummert deze automatisch.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$data = array(); // lege array, nog geen elementen in de array geplaatst.
$data[] = 'eerste element'; // array met één element die index 0 heeft. (computers tellen vanaf nul remember?)
$data[] = 'tweede element'; // array met twee elementen, Index 0 en index 1.
$data[] = 'derde element'; // array met drie elementen. Index 0, 1 en 2.
?>
$data = array(); // lege array, nog geen elementen in de array geplaatst.
$data[] = 'eerste element'; // array met één element die index 0 heeft. (computers tellen vanaf nul remember?)
$data[] = 'tweede element'; // array met twee elementen, Index 0 en index 1.
$data[] = 'derde element'; // array met drie elementen. Index 0, 1 en 2.
?>
ENZOVOORT
Al is het mogelijk niet strict noodzakelijk, het lijkt mij nog steeds een goede gewoonte om alle variabelen te definiëren voordat je ze gebruikt.
Ook weet ik niet of:
Code (php)
Het gewenste resultaat oplevert? Op deze manier vallen naam en aantal toch niet onder dezelfde index? Mogelijk bedoelde je:
Code (php)
Met dus de toevoeging dat je $grouped[$object->resource->group] altijd eerst zou moeten definiëren.
Simpelweg omdat iets werkt, maakt het nog niet juist.
Gewijzigd op 08/11/2017 16:52:22 door Thomas van den Heuvel
ehrg je hebt gelijk Thomas. Ben in de war, jouw tweede stukje code moet het doen.
iedereen dus bedankt , weer bijgeleerd