Array print giver fejl

Tags:    php array mysql

Hej udviklere.

Jeg har dette array som med print_r giver følgende output.

Array ( [1] => 2 [21] => 2 [41] => 2 [42] => 1 )

Det er meningen at ovenstående skal ind i et MySQL felt.

Fold kodeboks ind/udPHP kode 


Med ovenstående kode, skulle mit array gerne vise følgende.

1, 1, 21, 21, 41, 41, 42,

MEN! Af en eller anden mystisk grund bliver ovenstående til;

1, 1, 21, 21, 4141, 42,

Er der nogle venlige sjæle som kan forklare mig, hvorfor min kode ikke virker som den egentlig bør (iflg. mig) eller henvise mig til en anden metode jeg kan bruge.

Mvh. Mikkel



3 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Kan gætte at dit array ser sådan her ud (eller kan ikke se de keys => 0):
1 => 2
21 => 2
41 => 2
42 => 1

Så størrelse på dit array er 4.

Så har du din for loop hvor du for hver $key tilføjer $value gange. For hver iterering inkrementerer du $counter:

$key - Counter
1 - 0++
1 - 1++
21 - 2++
21 - 3++
41 - 4++
41 - 5++
42 - 6++

Hov, $counter stiger alt for hurtigt fordi du har den i den indre loop. Og siden der kun er 4 elementer i dit array , så er betingelsen:
(count($array) == $counter++ )
opfyldt ved den første 41.



Problemet er at du ved ikke hvornår du er slut. Men du ved hvor du starter. Så i stedet for at lade være med at skrive komma ved den sidste så vend den om og lav intet komma ved den første. Dvs. det allerførste element udskriver du bare, alle de andre skriver du ", " ved foran.

Alternativ kan du gøre som du foreslår. Brug $counter i stedet for $counter++ og lige før den yderste løkke slutter så indsæt $counter++.



Indlæg senest redigeret d. 12.08.2012 22:36 af Bruger #14645
Det lyder meget rigtigt.

Hvordan hulen skal jeg tackle det? Er okay med i at $counter kun skal stige, hvis der findes en ny key - altså den skal ikke stige hvis de er ens.
?



t