Avatar billede alexander_j Nybegynder
30. august 2003 - 16:17 Der er 11 kommentarer og
1 løsning

array til string og tilbage igen

Jeg tror jeg har stirret mig blind på denne kode og søger derfor lidt hjælp blandt de mange eksperter ;)

Med join og split er det muligt at omdanne arrays til strings og omvendt, men jeg har mistet overblikket når jeg arbejder med underarrays - prøv at se min kode her:

//mit array
t=new Array("emne0",["emne1.0","emne1.1"],[["emne2.0.0","emne2.0.1"],"emne2.1.0"]);
//array til string
for(i=0;i<t.length;i++){
    if(t[i].join(";")!=undefined) t[i]=t[i].join(";");
    for(j=0;j<t[i].length;j++){
        if(t[i][j].join(";;")!=undefined) t[i][j]=t[i][j].join(";;");
    }
}
t=t.join(";;;");
//string til array
t=t.split(";;;");
for(i=0;i<t.length;i++){
    if(t[i].split(";;").length>0) t[i]=t[i].split(";;");
    for(j=0;j<t[i].length;j++){
        if(t[i][j].split(";").length>0) t[i][j]=t[i][j].split(";");
    }
}

En ganske imponerende kode, men et eller andet går galt undervejs og mit array bliver ikke det samme som jeg startede med :(
Avatar billede alexander_j Nybegynder
30. august 2003 - 16:24 #1
Hey der var den vist:
//mit array
t=new Array("emne0",["emne1.0","emne1.1"],[["emne2.0.0","emne2.0.1"],"emne2.1.0"]);
//array til string
for(i=0;i<t.length;i++){
    for(j=0;j<t[i].length;j++){
        if(t[i][j].join(";")!=undefined) t[i][j]=t[i][j].join(";");
    }
    if(t[i].join(";;")!=undefined) t[i]=t[i].join(";;");
}
t=t.join(";;;");
//string til array
t=t.split(";;;");
for(i=0;i<t.length;i++){
    if(t[i].split(";;").length>0) t[i]=t[i].split(";;");
    for(j=0;j<t[i].length;j++){
        if(t[i][j].split(";").length>0) t[i][j]=t[i][j].split(";");
    }
}
Avatar billede barklund Nybegynder
30. august 2003 - 16:59 #2
Ja netop, du joinede den niveau før du havde joined det tredje. Tredje niveau blev derefter joined med default "," som delimiter.
Avatar billede barklund Nybegynder
30. august 2003 - 17:00 #3
"...du joinede andet niveau..."
Avatar billede alexander_j Nybegynder
30. august 2003 - 17:13 #4
Skal man virkelig igennem det her hver gang man vil gemme et array i shared object? Og hvis der nu var flere underunderunderunderarrays, så skulle koden fordobles et par gange - det burde være nemmere!

Et problem i min kode er at talværdier der oprindeligt var gemt som streng i omdannelsen bliver til integeer! Kan du løse den Morten(eller andre)?
Avatar billede barklund Nybegynder
30. august 2003 - 18:06 #5
har du prøvet at gemme det direkte?
Avatar billede alexander_j Nybegynder
30. august 2003 - 18:11 #6
:o Nøøøh - virker det?

Men problemet er det samme, når jeg vil gemme data via ASP på serveren(i fx en tekstfil)!
Avatar billede barklund Nybegynder
30. august 2003 - 18:16 #7
ja, så har du problemet. Men så er det jo, at man kan bruge Flash Comm eller AMFPHP (et open-source alternativ) der sørger for serialisering af objekter og klasser!
Avatar billede alexander_j Nybegynder
30. august 2003 - 18:25 #8
Æv det tror jeg ikke Azero understøtter - så fattige jeg, uden egen server, må vel nøjes med en besværlig og lang kode for at få det til at køre med ASP!
Avatar billede barklund Nybegynder
30. august 2003 - 20:11 #9
AMFPHP er ren PHP! Kræver vist ikke noget særligt... eller måske gør det... jeg ved det ikke ;)
Avatar billede alexander_j Nybegynder
31. august 2003 - 12:54 #10
Vil du ha' point her Morten?
Avatar billede barklund Nybegynder
31. august 2003 - 13:19 #11
Her kunne du jo også bruge en rekursiv toString metode... der brugte en array-dybde til at vælge en passe separator...
Avatar billede barklund Nybegynder
31. august 2003 - 13:45 #12
Tark for points ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester