<< Tilbage

Arrays

Arrays benyttes til at gemme lister af værdier/variabler. Forestil dig en liste med filer i et bibliotek, en liste med navne eller liste med bynavne. Til at gemme sådanne lister er et array utrolig brugbart.

Det første eksempel

Her er et eksempel på hvordan vi hidtil har måtte gøre:

Kode:
1.
2.
3.
4.
5.
6.
7.
<?php
//Hvordan man ikke gemme en liste med værdier
$navn1 "Jens Ole";
$navn2 "Lars Peter";
$navn3 "Bent Allan";
$navn4 "Bente Severinsen";
?>

En meget besværlig måde at gemme en liste med navne på, og meget svært at arbejde med (sætte flere navne på, søge, finde ud af hvor mange navne osv.). Her kommer arrays ind i billedet:

Kode:
1.
2.
3.
<?php
$navne 
= array("Jens Ole","Lars Peter","Bent Allan""Bente Serverinsen");
?>

$navne indeholder er nu en liste eller array med navne. Vi opretter et array ved at skrive array efterfulgt af en parentes med kommaseparerede værdier.

Hive værdier ud af et array

Når vi har oprettet arrayet med nogle værdier, så kan vi få de enkelte elementer ud på følgende måde:

Kode:
1.
2.
3.
4.
5.
6.
7.
<?php
$navne 
= array("Jens Ole","Lars Peter","Bent Allan""Bente Serverinsen");

echo 
$navne[0];
echo 
"<br>";
echo 
$navne[2];
?>
Resultat:
Jens Ole
Bent Allan

Vi skriver altså arrayets navn (i eksemplet navne) efterfulgt af en klamme der angiver hvilken positionen elementerne vi forsøger at trække ud har. Bemærk at den første værdi/element i arrayet ikke har positionen 1, men i stedet 0. Arrays første position er altså 0.

Tilføje værdier til et array

Hidtil har arrayet været fast defineret med nogle værdier i det øjeblik arrayet bliver oprettet. Men man kan fatisk tilføje værdier undervejs, altså udvide listen efter at arrayet er oprettet.

Kode:
1.
2.
3.
4.
5.
6.
7.
<?php
$chokolader 
= array("Ritter Sport""Toms");
$chokolader[] = "Marabou";
$chokolader[] = "Bogø";

echo 
$chokolader[3];
?>
Resultat:
Bogø

Er klammen tom tilføjer den et nyt element til arrayet. Bogø kommer så til at ligge på position 3 (husk at et array starter med position 0).

Arrays med nøgler

Hidtil har vi hevet værdier ud af arrayet ved at angive hvilken position værdien lå på. Position er i sådan et tilfælde nøglen, altså det man kan identificere værdien ud fra. Men i stedet for at have standard tal som nøgler (fra 0 og opefter), så kan man lave sine egne (og bl.a. bruge tekst i stedet for tal).

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php
$postnumre 
= array(2860 => "Søborg"
                   
4868 => "Eskilstrup"
                   
9574 => "Bælum");

$postnumre[8530] = "Hjortshøj";

echo 
$postnumre[2860] . "<br>";
echo 
$postnumre[8530];
?>
Resultat:
Søborg
Hjortshøj

Så skete der en helt masse. Grunden til at jeg har lavet linjeskift i arrayet er udelukkende for overskuelighedens skyld, sådan vil du tit se store arrays blive præsenteret. De enkelte er nu angivet med en nøgle eller indgang til værdien. Man skriver nøglen efterfulgt af => og så værdien. Eneste grund til at jeg ikke har smidt gåseøjn rundt om nøglen er fordi det er tal. I linje 6 indsættes et nyt element i arrayet, med nøgle/indgang sat til 8530 og værdien Hjortshøj.
I linje 8 og 9 skriver vi to elementer fra arrayet ud, og bemærk at vi i stedet for at skrive elementets position inde i klammerne, skriver nøglerne i stedet.

Et eksempel mere på denne type arrays:

Kode:
1.
2.
3.
4.
5.
6.
7.
<?php
$adresser 
= array("JensPeter" => "Bjergvej 15, 2860 Søborg",
                  
"Kæresten" => "Tulipsvej 2, 1234 Bjergby",
                  
"PeterCarlsen" => "Parkvej 7, 5789 Ydby");

echo 
$adresser['PeterCarlsen'];
?>
Resultat:
Parkvej 7, 5789 Ydby

Her bruger vi altså et navn som nøgle, til at gemme adresser (værdierne). Navnene fungerer altså som nøgler/indgange/indentifikation på adresserne.

Undersøg/debug arrays.

Bruger man mange dynamiske arrays i sin kode, så kan det sommetider være svært at gennemskue om de indeholder præcis det man har tænkt sig. Herunder vises en glimrende og hurtig måde at få vist præcist hvad dit array indeholder:

Kode:
1.
2.
3.
4.
5.
6.
7.
<?php
$postnumre 
= array(2860 => "Søborg"4868 => "Eskilstrup"9574 => "Bælum");

echo 
"<pre>";
print_r($postnumre);
echo 
"</pre>";
?>
Resultat:
Array
(
    [2860] => Søborg
    [4868] => Eskilstrup
    [9574] => Bælum
)

Man kan altså bruge funktionen print_r til at undersøge hvad et array indeholder. Nu giver det måske ikke så meget mening i eksemplet, fordi vi sagtens kan se hvad det indeholder. Men så snart man begynder at blive mere avanceret og arbejder med dynamiske og såkaldte multidimensionelle arrays, så er det en lille god ting at vide hvis man oplever fejl og uregelmæssigheder.

Multidimensionelle/sammensatte arrays

Indtil videre har vi brugt strenge som værdier (i eksemplerne adresser og bynavne bl.a.). Men man kan også lægge et array ind i et array som en værdi. Lad os springe lige ud i det med et eksempel:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?php
$telefonbog 
= array(
              
"Jens Ole"   => array("46452545""Søborg""God ven"),
              
"Automester" => array("12345678""Østby""Mekaniker"),
              
"Marianne"   => array("64587984""Bjergby""Elskerinde")
              );

echo 
$telefonbog['Marianne'][0] . "<br>";
echo 
$telefonbog['Marianne'][1] . "<br>";
echo 
$telefonbog['Marianne'][2];

echo 
"<pre>";
print_r($telefonbog);
echo 
"</pre>";
?>
Resultat:
64587984
Bjergby
Elskerinde
Array
(
    [Jens Ole] => Array
        (
            [0] => 46452545
            [1] => Søborg
            [2] => God ven
        )

    [Automester] => Array
        (
            [0] => 12345678
            [1] => Østby
            [2] => Mekaniker
        )

    [Marianne] => Array
        (
            [0] => 64587984
            [1] => Bjergby
            [2] => Elskerinde
        )

)

Den eneste forskel fra det vi har været vant til, er bare at vi i stedet for at have en streng som værdi nu har et array i stedet. Vi kan altså gemme et helt array til en enkelt nøgle. I eksemplet bruger vi altså navnet som nøgle, og et array som værdi.
I linje 8,9,10 hiver vi nogle værdier ud fra araryet. Først skriver vi $telefonbog['Marianne'], hvor marianne er nøglen og så ved den at arrayet vi gerne vil arbejde med, er det som har marianne som nøgle. Dernæst bruger vi en klamme mere der fortæller hvilket element i arrayet vi gerne vil have ud (standard nøgler, så 0 er telefonnummeret, 1 er by osv).

Gå igennem et array

Har man samlet nogle informationer i et array, har man ret ofte brug for at skrive dem ud på skærmen, altså præsentere brugeren for indholdet i arrayet. Til det formål kan man benytte foreach. Eksemepl:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$navneliste 
= array("Benjamin""Jesper""Dennis""Daniel");

foreach(
$navneliste as $navn)
{
    echo 
$navn "<br>";
}
?>
Resultat:
Benjamin
Jesper
Dennis
Daniel

Vi skriver altså foreach, efterfulgt af en parentes hvor den første variabel angiver hvilket array vi gerne vil arbejde med. Den næste variabel (navn) kommer til at indholder de enkelte elementer (variablen skifter værdi hver gang koden mellem { og } er blevet udført). Imellem tuborgklammerne står den kode man vil udføre hver gang man kommer til et nyt element/værdi. Her er et eksempel mere hvor der benyttes nøger i arrayet også:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?php
$danskeaviser 
= array(
                     
"Politikken" => "Venstreorienteret pladderjournalistik",
                     
"Information" => "For de intelektuelle bedrevidende idioter",
                     
"MetroXpress" => "For fattigrøvene"
                    
);

foreach(
$danskeaviser as $avis => $beskrivelse)
{
    echo 
"<b>" $avis ":</b> " $beskrivelse "<br>";
}
?>
Resultat:
Politikken: Venstreorienteret pladderjournalistik
Information: For de intelektuelle bedrevidende idioter
MetroXpress: For fattigrøvene

Array funktioner/manipulation

En af fordelene ved at gemme informationer i et array er, at det er enormt nemt at arbejde med (sortere værdier osv). Herunder kommer en beskrivelse af nogle af de mest nyttige som du bør kende til:

Antal elementer i et array

For at finde ud af hvor mange værdier/elementer der er i et array kan man bruge funktionen count(). Eksempel:

Kode:
1.
2.
3.
4.
5.
<?php
$dyr 
= array("Heste","Får","Geder");
$antal count($dyr);
echo 
"Arrayet indeholder: " $antal " elementer";
?>
Resultat:
Arrayet indeholder: 3 elementer

Tjekke om en bestemt værdi eksisterer i et array

Dette bruger man in_array() til:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$drikke 
= array("juice","cola","sportsvand","vodka");

if (
in_array("vodka"$drikke))
{
    echo 
"Vodka findes i arrayet";
}
?>
Resultat:
Vodka findes i arrayet

Det første parameter angiver hvilket ord der skal søges efter, men det andet parameter angiver hvor (i hvilket array) vi ønsker at søge.

Sortering af arrays

Et array kan sorteres på mange forskellige måder (alfabetisk, op/ned, på nøgler osv). Jeg viser her kun den simpleste, nemlig sort(), som simpelthen bare sorterer værdierne alfabetisk:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php
$sovse 
= array("Rødvinssauce""Brun sovs""Pepperrodssovs""Bearnaise");
sort($sovse);

foreach(
$sovse as $sovs)
{
    echo 
$sovs "<br>";
}
?>
Resultat:
Bearnaise
Brun sovs
Pepperrodssovs
Rødvinssauce

Har du brug for andre måder at søge på, så slår op i manualen og prøv at undersøge det selv. Her kan du også finde flere funktioner som man kan bruge sammen med sine arrays.

Leder du efter billige usb stik?, så kan du få et Billigt USB stik hos usb.dk

Spørgsmål/forslag/kommentarer rettes til webmaster@phpartikler.dk

Billige USB stik