ik zit hier al een paar uur te klooien met een array

$my_array[0] = "belgie"
$my_array[1] = "prov_Ant"
$my_array[2] = "Dessel"
$my_array[3] = "schoolstraat"
...

nu zou ik deze willen omvormen tot

$my_array['belgie']['prov_Ant']['Dessel']['schoolstraat'] = "vb: 12 huizen";

dit is maar een onozel voorbeeld maar de array kan langer niet tot 4 items
ik kan verder uitbreiden met de wereld bvb. het is louter gebruikt als voorbeeld.

het is namelijk zo dat er meerdere provincies zijn en dat hierbij belgie de root index gaat zijn van de array en verder dieper uitsplitsen.

ipv met numerieke indexen te werken.

uitdaging: waarin ik niet lijk te lukken is de array van 1 index diep herschrijven naar een array met meerdere dieptes..

thx
Ik snap je probleem niet, je wilt arrays nesten met tekst i.p.v. numeriek. Maar wat is er moeilijk/ een probleem?
achterstevoren beginnen..
<?php
// definieren kan zo:
$dessel = array("schoolstraat" => 12, "stationstraat" => 10);
$andere = array("kerkeweg" => 33, "straatnaam" => 15);
// of zo:
$antwerpen = array();
$antwerpen["dessel"] = $dessel;
$antwerpen["andere"] = $andere;
// of in elkaar verwerkt:
$my_array = array("belgie" => array("Antwerpen"=>$antwerpen));

var_dump($my_array);

?>

Maar zoals je ziet is dit een hele omslachtige manier om een lijstje met gegevens op te bouwen, en raad ik andere manieren aan. (classes of xml iets)
jup, ik weet hoe ik een array kan definieren, en kan vormen

het probleem is anders.

de data uit men database komt via een view gemaakt door de DBA uit naar mijn php pagina

de data uit de database zal in volgende vorm zijn

$datacol1 = "/belgie/antwerpen/dessel/schoolstraat/"; //fulldescription
$datacol2 = "12"; //aantal gebouwen

Een explode op $datacol1 "/" geeft me dan de array

nu zou er een loop lusje (foreach) rond de exploded data moeten komen zodat de array geherstructureerd wordt
Of je gaat je view aanpassen want /belgie/antwerpen/dessel/schoolstraat klinkt niet echt als een lekkere view/database of wel?

Anders;

<?php
list($niks, $land, $provincie, $stad, $straat) = explode("/", $datacol1);

$my_array[$land][$provincie][$stad][$straat] = $datacol2;
?>
Weet je zeker dat je weet wat je wil?

Je wil van een 1D array een 4D array maken.
En liefst waarschijnlijk nog dat het nieuwe aantal dimensies dynamisch wordt gezet op het aantal elementen van de oude array.

Waar n-dimensionale array's voor dienen:
Een voorbeeld:

<?php
// $luchtdrukken: 3D array
$x = 51; // breedtegraad
$y = 3; // lengtegraad
$z = 200; // hoogte
$gekozenLuchtdruk= $luchtdrukken[$x][$y][$z];
?>

$luchtdrukken bevat een 3D rooster aan gegevens.
Op basis van 3 onafhankelijke variabelen haal je 1 waarde.
Hier heb je bv. de gekozen luchtdruk op een bepaalde locatie in onze atmosfeer, op basis van coƶrdinaten (x,y) + hoogte.

Dingen als Belgiƫ, Antwerpen, Dessel, Schoolstraat zijn helemaal niet onafhankelijk.

Hoe zie jij je vraag in dit verhaal?
njah,
ik wil gewoon mijn resultaten groepen.

alles van belgie in 1 mutlti-dimensionale array
alles van prov_ant
alles van dessel
mooi groeperen in een array.

daarna is het makkelijker een lus uit te voeren rond een bepaalde sector
Ik heb ook net dit voorstel gehad, om het op te lossen via een ander random forum.

nu heb ik eigenlijk genoeg ervaring maar om arrays te definieren in een andere variable wist ik niet dat dit mogelijk was, kan iemand mij uitleggen of dit beschreven staat op www.php.net

Thx

<?php
$my_array = array('belgie','provant','dessel','schoolstraat');
$value = 12;
$new_array = "\$new_array = (";
for($x=0;$x<sizeof($my_array);$x++){
$new_array .= "array(".$my_array[$x]."=>";
$closure .= ")";

}
$new_array.= $value.')'.$closure.';';
eval($new_array);
print_r($new_array);

?>
okee,

ik ben eruit..

op regel 6 heb ik nog single quotes moeten adden omdat soms
$my_array[$x] met spaties en - streepkes was

de creatie van de array dat toch niet zo leuk vond
vandaar single quotes errond dat iedereen weet dat het een string is.

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Bart, die oplossing van jouw is echt een van de slechts voor te stellen oplossingen. Ik denk niet dat ik ooit ergere voorbeelden gezien heb... eval? wtf man...

Ik en andere komen met een nette en simpele oplossingen (die van mij is zelfs 2 regels) en je negeert het gewoon...
Nee eval dat is lekker veilig. Dat is niks anders dan je tekst letterlijk als php code te laten interpreteren. Dus als ik zorg dat je database ineens code bevat wordt deze uitgevoerd.

Als je dan perse alles in array wilt hebben kies dan gewoon voor de oplossing van Arjan. Deze lijkt te kloppen voor de situatie alhoewel je je moet afvragen of je niet gewoon een aantal queries moet definieren, iof gezien je view voorbeeld je database model moet aanpassen.

Reageren