Arrays

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

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:

  • I et array adskilles de enkelte værdier med et komma
  • Hver værdi er angivet af array'ets navn og dets placering.
  • PHP tæller: 0, 1, 2 ...

Udskrivning af array

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:

  • I et array adskilles de enkelte værdier med et komma
  • PHP tæller: 0, 1, 2 ...

foreach

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.

Arrays med flere dimensioner

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
  • 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.

  • Det associative array
  • 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.

Det multidimensionale array

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.

Associative arrays

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

Manipulation med arrays

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:

  • sorterer arrays
  • man tilføjer værdier til arrays
  • tæller antallet af værdier i arrays

Sorter arrays

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
)

Indsæt element i array

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:

Fjern element i array