Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Variabele locatie in array

Pagina: 1
Acties:

Onderwerpen


  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Op verzoek heb ik de openingspost behoorlijk aangepast en uitgebreid. De uitgeklede vraag kan hier worden gevonden. De openingspost geeft nu hopelijk een beter beeld van wat ik wil bereiken en waarom het een redelijk complex systeem is.

Thesis Topic

Voor mijn master thesis ben ik de volgens research question aan het onderzoeken:
"What is the influence of Information Services supported by Formal Semantics on Human decision making".
Het laatste is denk ik duidelijk (denk aan speed, quality, satisfaction and confidence). Bij Information services moet je denken aan kleine stukken software die de Human Decision Maker (HDM) van informatie voorzien. Dit kan bijvoorbeeld Google Maps zijn, maar ook een beurstracker of software die live energieprijzen doorgeeft.

Formal Semantics is de beschrijving van objecten (simpel gezegd). Dit kan je doen met een tafel (heeft vier poten, is van hout/staal/glas etc en kan X kg dragen) maar je kan het ook met software doen. Wanneer je software omschrijft (denk aan input, output en wijze van communiceren) kan je dankzij deze omschrijving software automatisch aan elkaar koppelen.

Met mijn onderzoek ben ik bezig software die binnen mijn onderzoeksgroep in een gesloten omgeving werd gebruikt om te zetten naar een versie die in de buitenwereld gebruikt kan worden. In plaats van services binnen de eigen software die aan elkaar worden gekoppeld probeer ik dit te doen voor online services (stukken software met een eenvoudige API).

Software

Onderstaand is een vereenvoudigde versie van de architecture te zien. Als eerste laad de Black Box (BB) alle beschrijvingen van de services die aanwezig zijn (een voorbeeld kan je hier vinden). Vervolgens kan het een request van buitenaf krijgen voor bepaalde informatie. Aan de hand van de beschrijvingen gaat het dan kijken welke informatie het nodig heeft om aan deze informatie te voldoen en combineert aan de hand van deze info de verschillende services.

Afbeeldingslocatie: http://46.17.1.188/~thesis/Images/Architecture.png

Het meest eenvoudige voorbeeld is wanneer je het weer op wilt vragen dat met de huidige services de BB de volgende gedachtestappen maakt: Voor het weer heb ik een plaatsnaam nodig, een plaatsnaam kan ik halen vanuit Google Maps, daarvoor heb ik of Lengte & Breedtegraad of een Locatie nodig, Lengte & Breedtegraad heb ik niet maar Locatie kan ik vinden in Google Calendar.

Vervolgens gaat het dus de data uit Google Calendar halen, bewerkt deze ruwe data, slaat deze op en gaat naar Google Maps, haalt de data op, verwerkt de data en gaat naar WeatherOnline om daar het weer op te halen. Let op deze services zijn voor mij een testscenario en zouden elke willekeurige service kunnen zijn zolang ik ze maar omschrijf in een XML-bestand hoe de Input, Output & Communicatie gaat.

Elke keer dat de BB naar de volgende service toe gaat komt dit omdat het een seintje krijgt dat alle variabelen aanwezig zijn. Daarna maakt een aparte functie de datasets klaar die gebruikt moeten worden om de service van de juiste info te voorzien. Deze scheiding van data ophalen & opslaan is gemaakt om het zo robuust mogelijk te maken.

Vrijwel alle problemen die ik had zijn opgelost in de zin dat ik bijna een werkend systeem heb behalve het dynamisch opslaan van de gegevens. Dit probleem heb ik uitgelegd in deze post

[ Voor 91% gewijzigd door Rainmaker1987 op 19-10-2011 10:53 . Reden: Verduidelijking situatie ]


  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Nu heb ik ook een service toegevoegd die een locatie kan omzetten in het huidige (of toekomstige) weer op die plek. Alleen deze data moet ook worden opgeslagen bij de betreffende afspraak. Ik heb al de gegevens dat de data moet worden opgeslagen binnen de variabele op de locatie: Appointment/0/ . Het probleem is alleen dat ik niet weet hoe ik dit op die locatie kan opslaan.
Dit stuk is mij niet helemaal duidelijk. Dus je itereert door de afspraken heen en je haalt het weer op indien er een locatie+tijd opgegeven is, maar vervolgens weet je niet waar je het op moet slaan. Waar wil je het opslaan dan, in diezelfde array? Lijkt me gewoon tijdens de iteratie een key 'weer' in de afspraak aanmaken met een array() van weergegevens. Of zie ik het verkeerd...
Het gedeelte Appointment/0/ is dus volledig variabel, ik weet ook van te voren niet hoeveel lagen ik diep moet gaan. Dit is pas bekend bij het uitvoeren van de functies. Zoektermen als: php array variable index leveren alleen maar simpele oplossingen als $variable[$index] op, ik weet alleen niet hoeveel indexen ik nodig heb. Weet iemand hier de juiste zoekterm / oplossing voor?
Als je de afspraken gewoon zo toevoegt aan $Variables['Appointment'], dan krijg je inderdaad betekenisloze indices. Waar zijn die afspraken vastgelegd? Wanneer dat bijvoorbeeld een database is, dan kun je eventueel de PK gebruiken als index. Hoezo weet je dan niet hoeveel indices je nodig hebt? Als het goed is weet je hoe de datastructuur er (mogelijk) uit ziet en daar kun je in de code op anticiperen.

De zoektermen die je hebt gebruikt zijn vrij algemeen, dus daar ga je niets mee vinden.
Ik heb al zitten denken dat er wellicht een recursieve functie aan te pas moet komen die door $variable heen loopt en elke keer alles merged, alleen dit zou volgens mij toch een stuk efficienter moeten kunnen.
Ik zie niet echt in waarom je een recursieve functie nodig zou hebben voor iets simpels als de weerdata invoegen in een bestaande array?

  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Bee.nl schreef op dinsdag 18 oktober 2011 @ 12:16:
Dit stuk is mij niet helemaal duidelijk. Dus je itereert door de afspraken heen en je haalt het weer op indien er een locatie+tijd opgegeven is, maar vervolgens weet je niet waar je het op moet slaan. Waar wil je het opslaan dan, in diezelfde array? Lijkt me gewoon tijdens de iteratie een key 'weer' in de afspraak aanmaken met een array() van weergegevens. Of zie ik het verkeerd...
Je moet het een stuk algemener zien. Het stuk met de afspraken is een voorbeeld waarbij de service van Google Calendar wordt gebruikt. Dit kan echter elke willekeurige service zijn, hierdoor weet ik ook niet van te voren (dus hardcoded) hoe de datastructuur eruit komt te zien. Vandaar dat ik op een meer dynamische wijze mijn data moet opslaan. In dit geval staan locatie + tijd in dezelfde locatie, echter met andere services kunnen ze op andere niveau's komen te staan waarbij ik als voorwaarde heb aangenomen dat het dan moet worden opgeslagen in de meest geneste variabele aangezien deze wel gebruik mag maken van data van de parents.
Als je de afspraken gewoon zo toevoegt aan $Variables['Appointment'], dan krijg je inderdaad betekenisloze indices. Waar zijn die afspraken vastgelegd? Wanneer dat bijvoorbeeld een database is, dan kun je eventueel de PK gebruiken als index. Hoezo weet je dan niet hoeveel indices je nodig hebt? Als het goed is weet je hoe de datastructuur er (mogelijk) uit ziet en daar kun je in de code op anticiperen.
De afspraken komen zoals aangegeven uit een service (in dit geval Google Calendar, tzou ook zomaar iets anders kunnen zijn). Aangezien de data slechts voor een korte tijd wordt gebruikt en er niets hoeft worden teruggeschreven is de index net zoveel waard als een PK zou zijn aangezien het wel een unieke waarde is binnen de array. Het aantal indices kan ik niet weten aangezien ik niet op voorhand weet wat de datastructuur van een service is. Het had bijvoorbeeld ook zomaar kunnen zijn dat Location weer een array was geweest met darin city, street, housenumber etc.
De zoektermen die je hebt gebruikt zijn vrij algemeen, dus daar ga je niets mee vinden.
Dit is mij helaas bekend, alleen ik weet geen preciezere zoektermen dan deze om te gebruiken
Ik zie niet echt in waarom je een recursieve functie nodig zou hebben voor iets simpels als de weerdata invoegen in een bestaande array?
Ik zou met een recursieve functie eenzelfde structuur kunnen opbouwen als al aanwezig is alleen met de data die ik wil opslaan er al in en deze kunnen mergen met de huidige variabele.

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Ik krijg het gevoel alsof je de ruwe data van willekeurige service(s) combineert in een array en daarmee aan de slag gaat. Op deze manier wordt de verwerking van die data onnodig complex en foutgevoelig.

Het lijkt me handiger om voor elke service (Google Calendar, Weerservice, etc) een aparte module/class te maken. Binnen elke servicemodule wordt de ruwe data vertaald naar de dataopzet die je binnen je eigen applicatie wilt gebruiken. Vanaf daar kun je pas (inhoudelijk) iets met de data doen, want dan weet je precies wat voor soort data je kan verwachten.
De API voor een service is een bekend gegeven, dus dat hoeft ook geen probleem te zijn. Het kan altijd gebeuren dat de API verandert, maar dat is een kwestie van de servicemodule aan te passen. In jouw opzet zou het hele verwerkingsalgoritme op zijn gat gaan.

Zie ook Zend_Gdata en Zend_Service voor mogelijke implementaties.

[ Voor 10% gewijzigd door Bee.nl op 18-10-2011 16:33 . Reden: typo ]


  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Bee.nl schreef op dinsdag 18 oktober 2011 @ 16:27:
Ik krijg het gevoel alsof je de ruwe data van willekeurige service(s) combineert in een array en daarmee aan de slag gaat. Op deze manier wordt de verwerking van die data onnodig complex en foutgevoelig.

Het lijkt me handiger om voor elke service (Google Calendar, Weerservice, etc) een aparte module/class te maken. Binnen elke servicemodule wordt de ruwe data vertaald naar de dataopzet die je binnen je eigen applicatie wilt gebruiken. Vanaf daar kun je pas (inhoudelijk) iets met de data doen, want dan weet je precies wat voor soort data je kan verwachten.
De API voor een service is een bekend gegeven, dus dat hoeft ook geen probleem te zijn. Het kan altijd gebeuren dat de API verandert, maar dat is een kwestie van de servicemodule aan te passen. In jouw opzet zou het hele verwerkingsalgoritme op zijn gat gaan.

Zie ook Zend_Gdata en Zend_Service voor mogelijke implementaties.
Het is inderdaad juist de bedoeling dat ik met ruwe data van services kan werken. Overigens wordt deze data al verwerkt dmv een xml beschrijving van de structuur van ruwe data (anders zou je nooit zo netjes je data van google calendar kunnen krijgen). Het maken van modules/classes voor elke service maken is juist niet de bedoeling. De reden voor deze software is een onderzoek naar de invloed van information services supported by formal semantics on human decision making. Juist het stuk supported by formal semantics (de beschrijving van objecten, in dit geval online services) maakt dat het een complex geheel maakt. Kheb ook nergens aangegeven dat het niet erg complex is, maar het opslaan binnen een array als je de locatie weet zou toch moeten kunnen. Ik kom er alleen helaas niet uit.

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 26-11 15:47
Ik snap nog steeds niet echt wat je allemaal probeert te doen en je openingspost is nogal warrig maar het lijkt erop dat je, voordat je iets als een nieuwe entry op wilt slaan, eerst wil kijken of die data toevallig al ergens bij hoort.

Als dat zo is zul je een uniek aspect moeten vinden waarmee je 1 entry kan identificeren en kijken in je lijst van huidige entrys of deze al bestaat. Iets als:
code:
1
2
3
4
5
if (list.hasKey($key)) {
    list[key][] = blabla;
} else {
    list[$key] = blabla;
}

...


  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
IceM schreef op dinsdag 18 oktober 2011 @ 21:18:
Ik snap nog steeds niet echt wat je allemaal probeert te doen en je openingspost is nogal warrig maar het lijkt erop dat je, voordat je iets als een nieuwe entry op wilt slaan, eerst wil kijken of die data toevallig al ergens bij hoort.

Als dat zo is zul je een uniek aspect moeten vinden waarmee je 1 entry kan identificeren en kijken in je lijst van huidige entrys of deze al bestaat. Iets als:
code:
1
2
3
4
5
if (list.hasKey($key)) {
    list[key][] = blabla;
} else {
    list[$key] = blabla;
}
Ik zal zometeen de openingspost aanpassen waarbij het hele systeem wordt uitgelegd. Hier even concreet de vraag:

Hoe kan ik een bepaalde waarde (soms array) opslaan in een array waarbij ik wel de locatie weet maar niet hoe ver deze genest is.

Voorbeeld:

Ik heb bestaande gegevens opgeslagen in $dataset. Daarnaast heb ik een variabele genaamd $variable die ik op locatie $location wil opslaan.

$dataset zou kunnen zijn:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            [Appointment] => Array 
                ( 
                    [0] => Array 
                        ( 
                            [Location] => Rotterdam, Kerkstraat 123456 
                            [StartTime] => 2011-09-08T14:30:00.000+02:00 
                            [EndTime] => 2011-09-08T17:00:00.000+02:00 
                            [Description] => Testing 2 
                        ) 

                    [1] => Array 
                        ( 
                            [Location] =>  
                            [StartTime] => 2011-09-08T12:00:00.000+02:00 
                            [EndTime] => 2011-09-08T14:00:00.000+02:00 
                            [Description] => Testing 
                        )


$variable zou kunnen zijn:
PHP:
1
2
3
4
5
6
7
8
Array
(
   [City] => Rotterdam
   [Street] => Kerkstraat
   [Housenumber] => 123456
   [State] => Zuid-Holland
   [Country] => Netherlands
)


En locatie zou kunnen zijn: Appointment/0/

Hoe kan ik dan $variable opslaan op de juiste locatie zonder dat ik iets moet doen waarbij ik Appointment & 0 hardcoded erin moet doen (ofwel direct via een variabele) aangezien ik niet weet hoeveel lagen diep ik moet gaan. Is er niet iets dat ik het ook zou kunnen aansturen als met xml door variable::Appointment::0.

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 26-11 15:47
Rainmaker1987 schreef op woensdag 19 oktober 2011 @ 10:18:
[...]


Ik zal zometeen de openingspost aanpassen waarbij het hele systeem wordt uitgelegd. Hier even concreet de vraag:

Hoe kan ik een bepaalde waarde (soms array) opslaan in een array waarbij ik wel de locatie weet maar niet hoe ver deze genest is.
Hoe bedoel je, wel de locatie weet? Wat is de locatie? Een index in je array?
Rainmaker1987 schreef op woensdag 19 oktober 2011 @ 10:18:Voorbeeld:

Ik heb bestaande gegevens opgeslagen in $dataset. Daarnaast heb ik een variabele genaamd $variable die ik op locatie $location wil opslaan.

$dataset zou kunnen zijn:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            [Appointment] => Array 
                ( 
                    [0] => Array 
                        ( 
                            [Location] => Rotterdam, Kerkstraat 123456 
                            [StartTime] => 2011-09-08T14:30:00.000+02:00 
                            [EndTime] => 2011-09-08T17:00:00.000+02:00 
                            [Description] => Testing 2 
                        ) 

                    [1] => Array 
                        ( 
                            [Location] =>  
                            [StartTime] => 2011-09-08T12:00:00.000+02:00 
                            [EndTime] => 2011-09-08T14:00:00.000+02:00 
                            [Description] => Testing 
                        )


$variable zou kunnen zijn:
PHP:
1
2
3
4
5
6
7
8
Array
(
   [City] => Rotterdam
   [Street] => Kerkstraat
   [Housenumber] => 123456
   [State] => Zuid-Holland
   [Country] => Netherlands
)


En locatie zou kunnen zijn: Appointment/0/

Hoe kan ik dan $variable opslaan op de juiste locatie zonder dat ik iets moet doen waarbij ik Appointment & 0 hardcoded erin moet doen (ofwel direct via een variabele) aangezien ik niet weet hoeveel lagen diep ik moet gaan. Is er niet iets dat ik het ook zou kunnen aansturen als met xml door variable::Appointment::0.
Ik heb sterk het idee dat je hele datastructuur/manier van opslaan niet juist is. Ik snap alleen voor nog steeds niet wat je nu wilt bereiken en waarom je alles zo raar opslaat. Het lijkt erop dat je array's in array's in array's (...) hebt en af en toe data tegen komt wat bij een eerder toegevoegde entry moet komen waarvan je geen idee hebt of deze al bestaat en als die al bestaat waar hij dan ergens staat.

Als jij data hebt dat onderdeel is van een ander stuk data (parent) dan neem ik aan dat je weet welke parent dat is als je de data binnen krijgt. Hoe identificeer je wat de parent is?

Ik kan me voorstellen dat je zoiets als structuur hebt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[data]
    [service A]
        [appointment1]
            [location]
                [city]
                [street]
            [...]
        [object2]
        [..]
    [service B]
        [object1]
        [object2]
        [..]
    [..]


Als jij vervolgens een straatnaam en huisnummer binnenkrijgt van service A en die behoort tot een eerder opgeslagen locatie object dan zul je wel moeten kunnen afleiden bij welke afspraak deze hoort anders kun je die nooit terugvinden.

...


  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Rainmaker1987 schreef op woensdag 19 oktober 2011 @ 10:18:
Hoe kan ik een bepaalde waarde (soms array) opslaan in een array waarbij ik wel de locatie weet maar niet hoe ver deze genest is.

Hoe kan ik dan $variable opslaan op de juiste locatie zonder dat ik iets moet doen waarbij ik Appointment & 0 hardcoded erin moet doen (ofwel direct via een variabele) aangezien ik niet weet hoeveel lagen diep ik moet gaan. Is er niet iets dat ik het ook zou kunnen aansturen als met xml door variable::Appointment::0.
Het enige wat ik me kan bedenken is dat je in de code een reference bijhoudt naar de plek in de array. Ik ga ervan uit dat de dataset altijd een array is.

PHP:
1
2
3
4
5
$dataset = array(..);

$ref =& $dataset['Appointment'][0] // verwijzing naar dataset::Appointment::0

$ref['nieuwe_data'] = $variable; // voeg data toe

[ Voor 0% gewijzigd door Bee.nl op 19-10-2011 12:31 . Reden: typo ]


  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
De structuur die je aangeeft is inderdaad ongeveer wat ik heb. Alleen is het niet interessant om te weten van welke service de gegevens vandaan komen, dus is de bovenste laag al direct een output variabele

code:
1
2
3
4
5
6
7
8
9
10
11
12
[data]
    [Appointment]
        [0]
            [location]
                [city]
                [street]
            [...]
        [1]
        [..]
    [Agenda]
    [Weather_online_key]
    [Name Agenda]


Ik heb dus data dat ik wil opslaan en ik weet ook precies waar (in dit voorbeeld $data[Appointment][0][Location]) alleen het gedeelte [Appointment][0][Location] stuur ik mee als string (Appointment/0/Location/) omdat ik het klaarzetten van dataset voor de services, het uitvoeren van services en het opslaan van data ivm flexibiliteit en robuustheid van elkaar heb gescheiden.

Mijn vraag is eigenlijk heel simpel: Is het mogelijk adhv een string als Appointment/0/Location/ data op te slaan in $data[Appointment][0][Location] ondanks dat je niet van te voren weet dat je in dit geval 3 parents hebt.

En op de opmerking: af en toe data tegen komt wat bij een eerder toegevoegde entry moet komen waarvan je geen idee hebt of deze al bestaat en als die al bestaat waar hij dan ergens staat Kan ik zeggen dat ik op het moment van uitvoeren 100% zeker weet dat hij bestaat en waar hij bestaat (de location string) maar dit kan ik op voorhand niet weten

@Bee.nl Terwijl ik aan het typen ben schreef jij je bericht. Ik was niet bekend met de &= reference (is ook vrij weinig te vinden op php.net, dit lijkt wat te zijn en ga ik meteen mee aan het klooien, ik ben namelijk op het moment dat ik de location string aanmaak op de locatie waar ik het in de toekomst wil opslaan en dan zou ik denk ik die reference aan kunnen maken.

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Kan je niet iets doen als (half pseudo)
PHP:
1
2
3
4
5
$pathArray = explode("/", $location);

$ref &= $dataSet; // reference
foreach($loc in $pathArray)
  $ref &= $ref[$loc];

en dat natuurlijk in een mooie class of functie met foutcheck etc.

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 10-10 08:02
Wat ik alleen niet begrijp is, dat als het toch al objecten zijn, je het perse in een array wilt stoppen? In PHP kunt je ook met objecten werken. En die zijn standaard al by reference, dus heb je die hele &$ constructie niet nodig.

maar als je om wat voor reden met arrays moet werken, en als die niet 100.000 keer per dag worden bij gewerkt is http://www.sitepoint.com/hierarchical-data-database/ misschien ook wel eens nuttig om te lezen.

Driving a cadillac in a fool's parade.


  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
Het lijkt helaas niet te werken. Kheb nu de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$pathArray = explode("/", $store_location);
unset($pathArray[count($pathArray) - 1]);     //Nodig om een blank weg the halen

//Even checken of alles bestaat
print_r($_SESSION["Variables"]);
print_r($pathArray);

$ref &= $_SESSION["Variables"]; // reference 
for($a = 0; $a < count($pathArray); $a++) 
  $ref &= $ref[$pathArray[$a]];     
  
//Check wat $ref is;  
echo "REF";               
var_dump($ref);
$ref[$variable["Name"]] = $data_var;


Alleen de ref lijkt alleen maar een int(0) te worden, de data wordt ook niet opgeslagen of iets dergelijks. En dat terwijl bij het checken als ik de dump van pathArray in $_SESSION['Variables'] handmatig volg kom ik op de juiste plek terecht.

Deze link geeft overigens ook mijn vraag weer (alleen ik wil dan data kunnen opslaan ipv het ophalen, dat lukt immers al) http://stackoverflow.com/...-path-to-retreive-a-value

O en als aanvulling, waarschijnlijk zullen er ook betere oplossingen zijn. Helaas is mijn programmeervaardigheid enigszins beperkt. Mijn master Business Information Management is een Bedrijfskunde master geen Informatica oid (geen programmeer lessen bijvoorbeeld) en de software is voor mij puur een tool om het onderzoek te doen. Het lijkt mij alleen zo vreemd dat het ophalen behoorlijk makkelijk gaat en dat het opslaan zo moeilijk is terwijl je exact de locatie weet.

[ Voor 24% gewijzigd door Rainmaker1987 op 19-10-2011 12:21 ]


  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

De fout zit hem in de assignment operator. Het is niet &= maar =&. Wat je nu doet is een bitwise AND in plaats van assignment by reference ;)

Ik had zelf $store_location eerst door trim() gehaald en dan pas explode(). Dat is iets minder foutgevoelig.
Stel dat je een $store_location zonder trailing slash hebt, dan klopt je $pathArray niet meer.

PHP:
1
2
$store_location = trim($store_location, '/');
$pathArray = explode("/", $store_location);

[ Voor 53% gewijzigd door Bee.nl op 19-10-2011 12:41 ]


  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Werkt hier prima:
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
<?php
  $data = Array
  (
    "App" => Array
      (
        0 => Array
          (
            "Test" => Array
            (
              "Name" => "Test"
            )
          )
      )
  );
  
  $loc = "App/0/Test/Name";
  $a = explode("/", $loc);
  $ref =& $data;
  foreach($a as $loc)
  {
    $ref =& $ref[$loc];
  }
  echo $ref;
?>

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Rainmaker1987
  • Registratie: Juni 2005
  • Laatst online: 08-12-2024
@Bee.nl thanks!!! Pair programming zou verplicht moeten worden :D. De data wordt nu op de juiste locatie opgeslagen. Helaas lijkt 1 service nu niet te werken maar kheb liever het systeem werkende dan een service. Die service komt nog wel. Toch vind ik dat dit makkelijker gemaakt zou moeten worden. Maar wellicht breng ik dan wat security risks naar voren waar ik geen weet van heb.

En die blank komt doordat er een / teveel in staat, komt door een ander stuk codewerk dat ik later aan ga passen. Sowieso moet er nog wel wat error afhandeling worden toegevoegd.
Pagina: 1