ik hergroepeer een verkregen array met onderstaande code , deze werkt zoals het zou moeten werken

<?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);
?>



wat ik krijg als output is volgende

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 première ) ) ) [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 ?
Waar komt deze array vandaan? Lees je die toevallig in met json_decode()? Geef dan als tweede parameter even true mee:

<?php
$array = json_decode($json, true);
?>

en doe eens

<?php
echo '<pre>'.print_r($arreventid, true).'</pre>';
?>

En plak de uitkomst daarvan eens in je openingspost want dat zou wel wat makkelijker leesbaar zijn.
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 heb true meegegeven , dan krijg ik voor elke variabel de waarde NULL

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]

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 . . . . .
Zou fijn zijn als je hem nog even tussen [code] en [/code] kan zetten dan zien we ook de tabs. Gecensureerde versie is uiteraard prima zolang de structuur maar klopt.

[size=xsmall]Toevoeging op 30/10/2017 21:37:44:[/size]

En wat zou je aan het eind willen overhouden? (voorbeeldje)


[size=xsmall]Toevoeging op 30/10/2017 21:38:17:[/size]

[edit]
een stuk beter leesbaar vindt je niet ;-)

[size=xsmall]Toevoeging op 30/10/2017 22:07:30:[/size]

De buitenste lus kan je in ieder geval met een foreach doorlopen:
<?php
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
<?php
foreach($arreventid as $object)
{
echo $object['url'];
echo $object['id'];
// etc
}
?>

$object['resource'] is echter een associatieve array. Die zou je dan kunnen benaderen met:
<?php
echo $object['resource']['url'];
echo $object['resource']['id'];
// etc
?>

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:
<?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>';
}
?>
bedankt voor de aanvullingen.
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


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 . . . 
Gewoon opnieuw opbouwen. Je bent niet erg duidelijk over welke groep of groepen je het hebt. Bedoel je zoiets ?

<?php
Array
(
[owner] => Array
(
[0] => Array
(

[number] => 1
[name] => xxxxxxxx
)
[1] => Array
(

[number] => 10
[name] => xxxxxxxx
)
)

[owningteam] => Array
(
[0] => Array
(

[number] => 4
[name] => xxxxxxxx
)
[1] => Array
(

[number] => 20
[name] => xxxxxxxx
)
)

)
?>
beste


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
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:

declareer nieuwe dataset D
loop door externe data E heen
    bestaat key X al in D?
        nee -> creeer X in D
    // op dit moment bestaat X dus altijd in D
    voeg huidig record E toe aan D[X]
einde loop
Probeer het onderstaande eens uit en dan zelf aan te passen..

<?php
$data = array();

foreach($arreventid as $object)
{
foreach($object['children'] as $child)
{
$data['Locaties'][]['group'] = $child['resource']['group'];
$data['Iets anders'][]['name'] = $child['owner']['name'];
}
}

echo '<pre>'.print_r($data, true).'</pre>';
?>

Reageren