array 1 diep naar xx diepte

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart

bart

20/04/2009 14:12:00
Quote Anchor link
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
 
PHP hulp

PHP hulp

16/04/2024 07:06:25
 
TJVB tvb

TJVB tvb

20/04/2009 14:22:00
Quote Anchor link
Ik snap je probleem niet, je wilt arrays nesten met tekst i.p.v. numeriek. Maar wat is er moeilijk/ een probleem?
 
Hipska BE

Hipska BE

20/04/2009 15:27:00
Quote Anchor link
achterstevoren beginnen..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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)
 
Bart

bart

20/04/2009 15:54:00
Quote Anchor link
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
 
Arjan Kapteijn

Arjan Kapteijn

20/04/2009 16:04:00
Quote Anchor link
Of je gaat je view aanpassen want /belgie/antwerpen/dessel/schoolstraat klinkt niet echt als een lekkere view/database of wel?

Anders;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
list($niks, $land, $provincie, $stad, $straat) = explode("/", $datacol1);

$my_array[$land][$provincie][$stad][$straat] = $datacol2;
?>
 
Emmanuel Delay

Emmanuel Delay

21/04/2009 01:10:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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?
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Bart

bart

21/04/2009 08:33:00
Quote Anchor link
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
 
Bart

bart

21/04/2009 08:38:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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);

?>
 
Bart

bart

21/04/2009 09:08:00
Quote Anchor link
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 Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door bart
 
Arjan Kapteijn

Arjan Kapteijn

21/04/2009 10:22:00
Quote Anchor link
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...
 
Ed

Ed

21/04/2009 13:59:00
Quote Anchor link
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.
 
Bart

bart

21/04/2009 20:47:00
Quote Anchor link
ja, Arjan je code is idd maar 2 lijnen code.
1 probleem wat als het resultaat niet meer evenveel dieptes zal hebben maar een dynamish aantal,
het is namelijk zo dat ik om het simpel te houden een vb, met land,prov,stad,straat heb genomen

in werkelijkheid weet ik niet hoeveel dieptes men resultaat gaat hebben.

er zou ineens nog bij kunnen komen huis6/kamer1/kast7/schuif3/ bvb.

het gaat hier om een stocksysteem over verschillende landen gespreid, iedereen kan zijn stock zo diep maken als hij zelf wenst.

sry voor de crapy most evel "eval" code ever

maar rijk me een dynamishe oplossing en ik herbekijk het
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.