Avatar billede lsskaarup Nybegynder
11. marts 2005 - 14:22 Der er 1 løsning

Problemer med 'feltnavne' i array

Jeg har en script, som skriver indholdet af nogle felter i databasen ud til en csv-fil, dog midlertidig kun til skærm.

Jeg har oprettet et array indeholdende nogle af de felter som der skal skrives ud, bl.a. andet med feltnavnet og indholdet, dog ikek ved alle.

Ja, det lyder meget kryptisk, og er det også at forklare, men jeg prøver at visualisere det.

Array indeholderne nogle af felterne: (Det smarte var så, at jeg på det sidste felt, bare kunne lægge henholdsvis 1 og 2 til, for at få de resterende felter)
    $felter = array(
            array('344', '334'),
            array('379', '369'),
            array('356', '345'),
            array('368', '357'),
            array('391', '380'),
            array('396', '392'),
            array('407', '403'),
            array('466', '461'),
            array('428', '419'),
            array('428a', '419a'),
            array('446', '437'),
            array('446a', '437a'),
            array('436', '429'),
            array('454', '447'),
            array('412', '408'),
            array('473', '467'),
            array('402', '397'),
            array('418', '413'),
            array('460', '455'),
            array('460a', '455a')
        );

Koden som løber dem igennem (Der er mere end dette, men det er her problemet er):
    $hej;
    for($j=0;$j<sizeof($felter);$j++) {
        for ($i=0;$i<sizeof($felter[$j]);$i++) {
            if ($i==0){
                //Starten af hver linie
                if ($j==0) {
                    //Aller første gang, skriver linieindikatoren og dennes værdi i variabel                   
                    $hej = $ordre . "; ". $felter[$j][$i] .";". $res["r".$felter[$j][$i]] . ";" . $res["r".$felter[$j][$i+1]];
                } else {
                    //De efterfølgende gang, tilføjer de resterende linieindikatorer samt værdier.
                    $hej = $hej . $ordre .";". $felter[$j][$i] .";". $res["r".$felter[$j][$i]] .";". $res["r".($felter[$j][$i+1])];
                }
            } else if ($i==1) {
                if ($res["r".($felter[$j][$i])]=="") {
                    $res["r".($felter[$j][$i])] = "";//Hvis der eventuelt skal sættes et specialtegn ind for tomt felt
                }
                if ($res["r".($felter[$j][$i]+1)]=="") {
                    $res["r".($felter[$j][$i]+1)] = "";//Hvis der eventuelt skal sættes et specialtegn ind for tomt felt
                }
                $hej = $hej .";".  $res["r".($felter[$j][$i]+1)] .";". $res["r".($felter[$j][$i]+2)] .";". "<br>";
            }
        }
        $hej = $hej . "#";
    }

Og resultatet (outputtet):
40444;0; 344;107214;11;1178;12958;
#40444;0;379;13843;2;824;1648;
#40444;0;356;24;1;2;2;
#40444;0;368;73;2;3;6;
#40444;0;391;244;4;5;20;
#40444;0;396;12787;10;;1212;
#40444;0;407;12005;2;492;984;
#40444;0;466;1903;5;31.2312;156;
#40444;0;428;45000;6;;3000;
#40444;0;428a;0;7;;3000;
#40444;0;446;0;8;;0;
#40444;0;446a;7500;1;;0;
#40444;0;436;0;9;;0;
#40444;0;454;0;10;;0;
#40444;0;412;36010;11;233;2563;
#40444;0;473;8500;50;16;800;
#40444;0;402;1131669;213;231;49203;
#40444;0;418;125952;32;123;3936;
#40444;0;460;324864;12;64;768;
#40444;0;460a;574728;14;64;768;
#40444;0;474;122;#40444;0;475;100;#40444;0;476;300;#40444;0;514;31730;#40444;0;515;82497;#40444;0;507;133265;#40444;0;508;241146;#40444;0;516;2854;#40444;0;517;9845;#40444;0;518;2919141;#40444;0;519;366;#

Problemstilling:
Det ser for så vidt godt nok ud, IND TIL jeg kommer til et felt, som hedder noget med a, f.eks. 428a, så kan jeg ikke længere lægge 1 til, og jeg får derfor returneret noget forkert. Så jeg skal have hjælp til få disse felter korrekt ud at det går ud over de andre.

Felterne hænger sammen på denne måde:

Linie 1) 428a, 419a, 421a
Linie 2) 446a, 437a, 439a
Linie 3) 460a, 455a, 456a, 457a

De første felter, skal udskrives båpde med deres feltnavn og deres værdi, de andre kun med deres værdi.

Så altså, når scriptet møder 1 af de 3 første felter, så skal den ikke lægge til, men derimod returnere de andre felter.

Håber det er en god nok forklaring, ellers skriv hvad det er I ikke forstår, og jeg vil prøve at forklare det på en anden måde.
Avatar billede lsskaarup Nybegynder
14. marts 2005 - 10:08 #1
Har selv fået løst det, dog ved at lægge alle felter ind i arrayet, og så i en linie i en for-sætning, tælle placeringer op når jeg skal bruge det
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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