I denne guide vil vi kigge arrays. Arrays er en variabel, der kan indeholde flere værdier - altså en måde at gruppere værdier på.
Arrays er variabler, der kan indeholde flere værdier på en gang. Et array er opbygget efter følgende model:
$navne = array("Anne", "Bent", "Cecilie","Dennis");
Det kan også skrives på følgende måde, hvor vi angiver hver værdi's placering:
$navne[0] = "Anne":
$navne[1] = "Bent";
$navne[2] = "Cecilie";
$navne[3] = "Dennis";
Læg mærke til:
Hvis vi blot ønsker at se hele vores array anvender vi kommandoen: print_r(array_values( ** array **))
<?php
$navne = array("Anne", "Bent", "Cecilie","Dennis");
print_r($navne);
?>
Array ( [0] => Anne [1] => Bent [2] => Cecilie [3] => Dennis )
Hvis vi vil ramme de enkelte værdier så anvender vi en anden metode. Her angiver vi hvilken position i arrayet vi vil have skrevet ud.
<?php
$navne = array("Anne", "Bent", "Cecilie","Dennis");
echo "$navne[0]\n";
echo "$navne[1]\n";
echo "$navne[2]\n";
echo "$navne[3]\n";
?>
Anne Bent Cecilie Dennis
Læg mærke til:
En hurtig måde at udskrive et array på er er ved at anvende foreach():
<?php
$navne = array("Anne", "Bent", "Cecilie","Dennis");
foreach( $navne as $value) {
echo "$value\n";
}
?>
Anne Bent Cecilie Dennis
For at udskrive med foreach skal array'et gives et nyt variabelnavn ($navne → $value)- hvorefter det kan udskrives af foreach.
Nogle gange kan det være praktisk at oprette arrays hvor man kan gruppere værdier i. Det kan f.eks. være spillernavn, antal slag og point. Den opgave kan et array med flere dimensioner løse.
Det "almindelige" multidimensionelle array giver en logisk tilgang, da man kan tilgå det rigtige sted ved hjælp af nummeriske værdier i sine brackets. Her skal man altså ikke bekymre sig om at navngive hver enkelt position, da de bliver indekseret automatisk.
Den associative tilgang gør, at man kan lagre flere værdier i et array, men give det menneskelæselige navne. Man lagrer varibleer i et array og anvender dem løbende i koden.
Det som er afgørende for hvilken type array man skal anvende afhænger af det som det skal løse. Men generelt bør man holde sig til det "almindelige" multidimensionale array, da det er lettest at anvende i f.eks. løkker.
Man kan også lave arrays med flere dimensioner, altså hvor man pakker arrays ind i arrays. Herunder laver vi et array med de ovenstående personer, som indeholder: Navn, kodeord og alder:
<?php
$navne = array(
array("Anne", "123",19),
array("Bent","234",32),
array("Cecilie","345",29),
array("Dennis","456",42)
);
print_r($navne);
?>
Array ( [0] => Array ( [0] => Anne [1] => 123 [2] => 19 ) [1] => Array ( [0] => Bent [1] => 234 [2] => 32 ) [2] => Array ( [0] => Cecilie [1] => 345 [2] => 29 ) [3] => Array ( [0] => Dennis [1] => 456 [2] => 42 ) )
Hvis vi vil ramme det enkelte "under"-array kan vi gøre som herunder.
<?php
$navne = array(
array("Anne", "123",19),
array("Bent","234",32),
array("Cecilie","345",29),
array("Dennis","456",42)
);
echo $navne[1][0]."\n";
echo $navne[1][1]."\n";
echo $navne[1][2];
?>
Bent 234 32
Man kan indlejre arrays i flere niveauer, men man skal passe på med at man ikke mister overblikket.
Man kan også lave arrays, hvor man selv navngiver "positionen" (nøglen) for hver enkelt værdi.
$kodeord = array("Anne"=>"123", "Bent"=>"234", "Cecilie"=>"345","Dennis"=>"456");
En hurtig udskrift giver
<?php
$kodeord = array("Anne"=>"123", "Bent"=>"234", "Cecilie"=>"345","Dennis"=>"456");
print_r($kodeord);
?>
Array ( [Anne] => 123 [Bent] => 234 [Cecilie] => 345 [Dennis] => 456 )
Her er de enkelte værdier ikke angivet af deres position, men af den værdi man associerer (forbinder) til den enkelte værdi. For at få Bents kodeord skal man altså skrive:
<?php
$kodeord = array("Anne"=>"123", "Bent"=>"234", "Cecilie"=>"345","Dennis"=>"456");
echo $kodeord[Bent];
?>
234
I vores sammenhæng der skal vi primært anvende arrays til at lave små tabeller eller indsamlt tal. Derfor skal vi have et overblik over hvordan:
Lad os kigge på to simple arrays: et for bogstaver og et for tal:
<?php
$bogstaver = array("a","d","e","c","b");
$tal = array(1,4,5,3,2);
print_r($bogstaver);
echo "</br></br>";
print_r($tal);
?>
Array ( [0] => a [1] => d [2] => e [3] => c [4] => b ) Array ( [0] => 1 [1] => 4 [2] => 5 [3] => 3 [4] => 2 )
Til at sortere værdierne i arrays kan vi anvende følgende funktioner:
Funktion | Beholder oprindelig positions værdi | rækkefølge |
---|---|---|
sort() | nej | lav → høj |
rsort() | nej | høj → lav |
asort() | ja | lav → høj |
arsort() | ja | høj → lav |
shuffle() | nej | tilfældig |
Her sortere vi de to arrays i rækkefølge fra lavest til højest:
<?php
$bogstaver = array("a","d","e","c","b");
$tal = array(1,4,5,3,2);
sort($bogstaver);
sort($tal);
print_r($bogstaver);
print_r($tal);
?>
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
Herunder vil vi fylde 10 terningslag ind i et array
<?php
$slag = array();
for($i=1;$i<=10;$i++) {
$slag[] = mt_rand(1,6);
}
print_r($slag);
?>
Array Array ( [0] => 3 [1] => 3 [2] => 2 [3] => 3 [4] => 4 [5] => 6 [6] => 1 [7] => 3 [8] => 1 [9] => 4 )
For at indsætte et element i et multidimensionelt array: