Avatar billede Claus Mester
23. september 2007 - 10:34 Der er 17 kommentarer og
1 løsning

Multidimensionelt array udskrives

Nogen der kan assistere med den her?

Jeg ønsker at oprette et array opdelt og med følgende data:

Skandinavien
- Danmark
- Sverige
- Norge

Syden
- Italien
- Frankrig
- Grækenland

Når dette/disse array(s) er oprettet, skal indholdet af begge arrays udskrives så det viser følgende:


Lande i Skandinavien:
Danmark
Sverige
Norge

Lande i syden:
Italien
Frankrig
Grækenland

Hvordan opretter jeg arrayet og hvordan udskriver jeg det bagefter?
Avatar billede jensgram Nybegynder
23. september 2007 - 11:05 #1
$a = array(
    'Skandinavien' => array('Danmark', 'Sverige', 'Norge'),
    'Syden'        => array('Italien', 'Frankrig', 'Grækenland')
);
Avatar billede jensgram Nybegynder
23. september 2007 - 11:07 #2
Udskriv (utestet):

foreach($a as $region) {
    print "Lande i " . $region . ":\n";
    foreach($a[$region] as $land) {
        print $land . "\n";
    }
    print "\n";
}
Avatar billede showsource Seniormester
23. september 2007 - 11:38 #3
eller
foreach($a as $key => $value) {
    echo"<p>\r\nLande i ". $key .":<br />\r\n";
    echo implode("<br />\r\n", $value);
    echo"</p>\r\n";
}
Avatar billede jensgram Nybegynder
23. september 2007 - 11:48 #4
Ja, det er nok lidt pænere :)

Hvis der senere skal wrappes i links etc. er det dog næppe helt så anvendeligt.

Noget andet: Måske $a ikke er det bedste navn.
Avatar billede Claus Mester
23. september 2007 - 13:35 #5
Tak for respons.
Det virker lige ud af landevejen. Men kan i fortælle mig, hvad \n og \r gør? Og har jeg forstået det rigtigt, at implode fortæller hvor der skal placeres linieskift (efter hver \r\n)?
Avatar billede jensgram Nybegynder
23. september 2007 - 13:45 #6
implode betyder, at elementerne i hvert array skal "klistres" sammen med strengen "<br />\r\n".

\n betyder newline, mens \r betyder carriage return. På Windows er et linieskift \r\n, mens *NIX bruger \n. For at gøre det hele mere forvirrende bruger Mac \r. Derfor går man ofte med livrem og seler - i.e. \r\n
Avatar billede jensgram Nybegynder
23. september 2007 - 13:47 #7
e.g.:

$a = array('a', 'b');
$str = implode('|', $a);

print $str;
--> Output: "a|b"
Avatar billede Claus Mester
23. september 2007 - 13:54 #8
Super god forklaring, tak.

Ka du så også fortælle mig, hvordan jeg formaterer teksten "Lande i" med en CSS class og output fra $value med en anden?
Avatar billede Claus Mester
23. september 2007 - 13:56 #9
Lande i skal formateres med <p class="normal">
Output fra $value skal formateres med <p class="script">
Avatar billede jensgram Nybegynder
23. september 2007 - 14:02 #10
Så ville jeg

foreach($a as $region => $value) {
    print "<p class="normal">Lande i " . $region . ":</p>\n<p class="script">";
    implode("<br />\n", $value);
    print "</p>\n";
}
Avatar billede jensgram Nybegynder
23. september 2007 - 14:02 #11
ups

foreach($a as $region => $value) {
    print "<p class="normal">Lande i " . $region . ":</p>\n<p class="script">";
    print implode("<br />\n", $value);
    print "</p>\n";
}
Avatar billede Claus Mester
23. september 2007 - 14:12 #12
Prøv engang at se resultatet her:

http://ciffor.dk/phparrays.php

Første linie bliver rykket ind, som tiltænkt, men de efterfølgende linier skulle også meget gerne rykkes med ind.
Avatar billede jensgram Nybegynder
23. september 2007 - 14:24 #13
Ja, for text-indent omfatter kun første linie. Hvis du vil indrykke hele <p>'en, så hedder det padding-left.

... og strengt taget har det vist ikke ret meget med PHP og arrays at gøre :)
Avatar billede Claus Mester
23. september 2007 - 14:29 #14
Nej, det kan jeg se nu, du henviser til min CSS. Sorry :-) - tænkte det havde noget at gøre med placeringen af class i php statementet.

Men tak for hjælpen. Nu har jeg fået det resultat jeg ønskede på php siden.
Husk at smude et svar.
Avatar billede jensgram Nybegynder
23. september 2007 - 14:33 #15
Så lidt.
Avatar billede Claus Mester
23. september 2007 - 14:38 #16
showsource: Tak for hjælpen. Smider du også et svar.
Avatar billede showsource Seniormester
23. september 2007 - 15:24 #17
ingen point til mig, ellers tak
Avatar billede Claus Mester
23. september 2007 - 19:11 #18
Ok.
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