Fra string til array

Tags:    php

Ja så er det min tur igen. :)

Jeg har i løbet af den sidste time rodet med et script for en. Scriptet er lavet af en hel 3. person så jeg har knoklet med at få det til at samarbejde. Nu er jeg så endelig kommet så langt at den gør hvad der er meningen. Problemet er bare jeg kan ikke få dataen til at blive splitet op.

Derfor håber jeg en herind lige kan fortælle hvordan man gør det. Må være for træt til at kunne se hvad det er jeg laver, plejer at rode med sådan noget hver dag, men er helt blank lige nu. haha

Kan desværre ikke vise ret meget kode da filerne er krypteret. Men her er det jeg kan vise.

Fold kodeboks ind/udPHP kode 


Det er den del jeg skal have lavet om.
GetResponse er en funktion defineret i den krypterede fil - og den den gør er at den hetner noget information fra databasen og laver en RETURN af data.

Output på den der er så dette:

Array ( [id] => 84 [ownerid] => 23 [name] => DMC [type] => mysql [megabyte] => 0 [isvalid] => 1 [active] => 1 [lockcode] => 6111 [lastbackup] => 00-00-0000 ) Array ( [id] => 83 [ownerid] => 23 [name] => [type] => mysql [megabyte] => 0 [isvalid] => 1 [active] => 1 [lockcode] => 7111 [lastbackup] => 00-00-0000 )


Det jeg så egentlig vil have den til at bare med en foreach($data as $item => $val)

her er det så jeg er totalt blank lige nu.
Output ligner et array . men det at lave en foreach virker jo bare ikke, da alt dataen er i $data og ikke en en array.

*ps jeg har mulighed for at få den krypterede fil ændret en smule hvis det hjælper.







Indlæg senest redigeret d. 20.03.2012 23:23 af Bruger #11875
7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
er ik helt sikker på jeg har fattet det, men hvis jeg forstår det så kan du bruge:

Fold kodeboks ind/udPHP kode 


edit:
hvis det er fordi du får det som text fra din fil af, så prøv at kig på serialize og unserialize for at lave det om til et array i php.



Indlæg senest redigeret d. 21.03.2012 00:57 af Bruger #3427
Outputtet du giver er to assoc arrays.

Jeg formoder at du får et array af arrays som resultat fra GetResponse funktionen, og så skal du bare stacke to foreachs og så kører det som du er vandt til. Noget i stil med:

Fold kodeboks ind/udPHP kode 




Kenneth.
Nope virker ikke. Da det er en string og ikke et array.


Gustav:

Den giver mig bare: Warning: Invalid argument supplied for foreach() in run.php on line 8

Linje 8 er foreach ($data as $x) {


Jeg har fundet ud af hvor den skaffer den data fra. Det er en mysql fetch assoc som denne:

while($querydata = mysql_fetch_assoc($query)) {
print_r($querydata);
}

output som jeg ser er så $querydata





Indlæg senest redigeret d. 21.03.2012 01:29 af Bruger #11875
Hvad får du hvis du skriver
Fold kodeboks ind/udPHP kode 


Det, at returnere en string der er formateret sådan lyder meget underligt.



Kenneth.
Nope virker ikke. Da det er en string og ikke et array.


Gustav:

Den giver mig bare: Warning: Invalid argument supplied for foreach() in run.php on line 8

Linje 8 er foreach ($data as $x) {


Jeg har fundet ud af hvor den skaffer den data fra. Det er en mysql fetch assoc som denne:

while($querydata = mysql_fetch_assoc($query)) {
print_r($querydata);
}

output som jeg ser er så $querydata



hvis det er fra en database og du ville bruge foreach kan du gøre sådan her:
Fold kodeboks ind/udPHP kode 

+ det Gustav skrev i hans indlæg omkring foreach.



Havde ikke fanget at den returnerede den streng der i sin helhed. Jeg troede bare du havde taget to arrays ud af et større array.

Hmm. Det virker meget mystisk, som også @dan er inde på.

Du har ikke mulighed for at vise os queryen også vel? Du kan omdøbe rækkerne hvis du er nervøs for at det er følsom information.

Den kode stump du har givet med print_r og while-løkken - er det det output vi har fået? I så fald, så er det jo bare fordi din query giver to rækker tilbage. Hvis du vil have dem over i et array du kan returnere kan du gøre noget lignende:

Fold kodeboks ind/udPHP kode 




Hej igen. Takker for alle jeres svar i løbet af formiddagen.
Jeg skrev en mail til udvikleren af den krypterede fil og har nu fået svar fra ham præsis hvad det er den fil gør og så kan jeg bedre forstå jeg ikke kunne få det til at virke i søvnig tilstand. :D

det output jeg får (det jeg viste i første indlæg) er det faktiske output - ja det er arrays ( teknisks set, forklaring kommer )

Dataen kommer fra en mysql query _magen_ til den jeg har vist, så det burde være nemt nok at bruge de to arrays til noget. Forklaringen på hvorfor jeg ikke kan bruge en foreach eller andet til den er fordi den slet ikke findes som et array på min side.

Den krypterede fil går ind på en hjemmeside med en file get contents og der bliver den nødvendige data hentet som den har fået besked på. Den laver så nogle ting med den data og laver et output til mig som jeg ser med get response. Så jeg har ikke adgang til hverken queryen eller noget andet, det output jeg ser er det den kommer ud med på hjemmesiden.

Nu hvor jeg har sovet har jeg så også løst problemet tror jeg.
Der var en ekstra ting man kunne tilføje til funktionen for at få dataen ændret inden man ser den (vidste jeg kun da udvikleren fortalte det) - så det tilføjede jeg og dataen bliver nu laver om med en serialize.

Det jeg så har gjort nu for lige at få noget til at virke er dette ( med lidt lånt kode fra Gustav :)

Fold kodeboks ind/udPHP kode 



Krævede som i kan se en ekstra foreach , men går nok nu hvor den bare virker.







t