Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Underlig ting med array

4 views
Skip to first unread message

Kurt G.

unread,
Mar 28, 2012, 5:59:04 PM3/28/12
to
Jeg forstår ikke, hvordan følgende kan lade sig gøre:

Jeg fylder vha noget program et array med data, som svarer til det
nedenstående:
$navn[1] = 'navn1';
$navn[2] = 'navn2';
$navn[7] = 'navn3';
$navn[13] = 'navn4';
$navn[9] = 'navn5';
$navn[5] = 'navn6';

Laver jeg så en funktion for at læse værdierne i array-et:

function List1Array($mitarray)
{
for ($i = 0; $i < count($mitarray); $i++)
{
echo $i.': '.$mitarray[$i].'<br>';
}
}

får jeg:
0:
1: navn1
2: navn2
3:
4:
5: navn6
altså ikke alle de indsatte værdier.
Længden af array-et er korrekt 6, men der er tomme elementer i det.

Derimod giver:
echo '1='.$navn[1].' 2='.$navn[2].' 7='.$navn[7].' 13='.$navn[13].'
9='.$navn[9].' 5='.$navn[5].'<br>';
følgende:
1=navn1 2=navn2 7=navn3 13=navn4 9=navn5 5=navn6

Hvordan bærer php sig med at gemme sine array, så den sidste echo-linie
giver korrekte værdier og længden samtidig kun er 6?

Mvh Kurt


Anders Wegge Keller

unread,
Mar 28, 2012, 6:14:13 PM3/28/12
to
"Kurt G." <kur...@guldbaek.net> writes:

...

> Hvordan bærer php sig med at gemme sine array, så den sidste
> echo-linie giver korrekte værdier og længden samtidig kun er 6?

Fordi det PHP kalder et array ikke er det, men derimod er en afart af
den datastruktur der normalt kendes som hashtable, map eller key-value
pair. Der findes sikkert endnu flere navne som jeg ikke kender til.

Der er en længere udredning af hvad et PHP array egentlig er i
manualen på http://www.php.net/manual/en/language.types.array.php

I dit tilfælde ville du få det resultat jeg tror du forventer ved at
løbe det igennem p følgende måde:

foreach ($mitarray as $i) {
echo $i.': '.$mitarray[$i].'<br/>';
}

Og det kan endda optimeres. Bruger du i stedet formen

foreach ($mitarray as $i => $v) {
echo $i.': '.$v.'<br/>';
}

Får du det samme resultat, uden at skulle ud i at lave opslaget
bagefter.

--
/Wegge

Leder efter redundant peering af dk.*,linux.debian.*

Birger Sørensen

unread,
Mar 28, 2012, 6:49:23 PM3/28/12
to
Anders Wegge Keller kom med fᅵlgende:
8X
> foreach ($mitarray as $i) {
> echo $i.': '.$mitarray[$i].'<br/>';
> }

Nej: $i er vᅵrdien - ikke key.

8X
> foreach ($mitarray as $i => $v) {
> echo $i.': '.$v.'<br/>';
> }

Meget bedre :-Z

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://skippersevent.dk


Anders Wegge Keller

unread,
Mar 29, 2012, 1:59:48 AM3/29/12
to
Birger Sørensen <s...@bbsorensen.com> writes:

> Anders Wegge Keller kom med følgende:
> 8X
> > foreach ($mitarray as $i) {
> > echo $i.': '.$mitarray[$i].'<br/>';
> > }
>
> Nej: $i er værdien - ikke key.

Ja, det er rigtigt. Så kan jeg lære ikke at svare efter midnat.

Stig Johansen

unread,
Mar 29, 2012, 3:38:52 AM3/29/12
to
Anders Wegge Keller wrote:

> Ja, det er rigtigt. Så kan jeg lære ikke at svare efter midnat.

Hvornår er det IKKE efter midnat :-)

--
Med venlig hilsen
Stig Johansen

Anders Wegge Keller

unread,
Mar 29, 2012, 3:48:05 AM3/29/12
to
Stig Johansen <wop...@gmail.com> writes:

> Anders Wegge Keller wrote:
>
> > Ja, det er rigtigt. Så kan jeg lære ikke at svare efter midnat.
>
> Hvornår er det IKKE efter midnat :-)

De første 5-6 timer efter man har klædt om til aftendress og indtaget
den første G&T i officersmessen?

Kurt G.

unread,
Mar 29, 2012, 7:37:24 AM3/29/12
to
"Anders Wegge Keller" skrev i meddelelsen
news:87sjgrv...@huddi.jernurt.dk...
Stig Johansen <wop...@gmail.com> writes:
> Anders Wegge Keller wrote:
>
> > Ja, det er rigtigt. Så kan jeg lære ikke at svare efter midnat.
>
> Hvornår er det IKKE efter midnat :-)
De første 5-6 timer efter man har klædt om til aftendress og indtaget
den første G&T i officersmessen?
--
/Wegge
=============================================
Jeg takker for svarene, nu tror jeg, at jeg forstår det!
Mvh Kurt

Martin Larsen

unread,
Mar 29, 2012, 9:08:36 AM3/29/12
to
Kurt G. wrote:

> Hvordan bærer php sig med at gemme sine array, så den sidste echo-linie
> giver korrekte værdier og længden samtidig kun er 6?

Hvis det kun er indholdet du er interesseret i og ikke nøglerne, kan du
klare det således:

echo implode("<br>", $navn);
0 new messages