Arrays i PHP
De fleste som har skrevet omfattende scripts, er før eller siden stødt på problemet med at de bliver vanskelige at overskue hvis man bruger mange variabler. Lær derfor at bruge arrays til at gøre det overskueligt med.
Hvordan fungere Arrays?
Arrays er en fundamental del i al programmering, men jeg vil her koncentrere mig om brugen af denne primitiv-type i PHP.
Et array er kort sagt en variabel der indeholder en "liste" med nøgler og værdier. Det kan også beskrives som en variabel der indeholder variabler. Værdien af variabler (nøgler) i et array kan være af hvilken som helst type, hvilket betyder at et array også kan indeholde et andet array. Dette kaldes et multi-dimensionalt array. Alt dette kan ved første øjekast se besværligt ud, men princippet er egentlig simpelt nok.
Det første eksempel bygger på at vi har fire variabler med navne på medarbejdere i en virksomhed ($navn1,$navn2, osv). I stedet for at bruge denne metode med individuelle variabler, kan man med fordel lave det om til et array:
<?php
// $arrNavne sættes til et array med navnene
$arrNavne = array("John", "Mogens", "Pia", "Rikke");
// Værdierne udskrives
echo $arrNavne[0]; // John
echo $arrNavne[1]; // Mogens
echo $arrNavne[2]; // Pia
echo $arrNavne[3]; // Rikke
// Nye navne tilføjes
$arrNavne[] = "Thomas";
$arrNavne[] = "Susanne";
// ...og udskrives
echo $arrNavne[4]; // Thomas
echo $arrNavne[5]; // Susanne
?>
Tallet i [] fortæller PHP hvilken nøgles værdi der skal udskrives. I ovenstående array har jeg ikke specificeret nøgler for værdierne og i så fald vil der automatisk blive dannet et nøgle-indeks med hele tal - startende fra 0 og ikke 1 som man kunne tro.
Det er også muligt at specificere nøglerne, hvilket kan gøre det betydeligt nemmere at arbejde med arrayet. Nøglerne kan bestå af hele tal eller strenge:
<?php
// Et array med flere typer nøgler
$arrNavne = array(
"chef" => "John",
"marketing" => "Mogens",
"support" => "Pia",
3 => "Rikke",
"Thomas",
"Susanne"
);
echo $arrNavne["chef"]; // John
echo $arrNavne["marketing"]; // Mogens
echo $arrNavne["support"]; // Pia
echo $arrNavne[3]; // Rikke
echo $arrNavne[4]; // Thomas
echo $arrNavne[5]; // Susanne
// Nyt navn tilføjes
$arrNavne["salg"] = "Michael";
// Et navn ændres
$arrNavne["support"] = "Morten";
// Et navn slettes med unset()
unset($arrNavne[4]); // Thomas bliver afskediget :)
?>
Nu skulle du gerne være rustet til at oprette og modificere et array. Hvis du skal udskrive/modificere værdier i et array kan det gøres noget smartere med foreach:
<?php
// Et simpelt array med tal
$arrTal = array(44, 78, 89, 108, 34, 12);
// En foreach-løkke som udskriver alle værdierne
foreach( $arrTal as $noegle => $vaerdi ) {
echo "[" . $noegle . "] = " . $vaerdi . "<br />";
}
/*
Udskriver:
[0] = 44
[1] = 78
[2] = 89
[3] = 108
[4] = 34
[5] = 12
*/
// Endnu en løkke som ganger værdierne med to og overskriver de gamle værdier
foreach( $arrTal as $noegle => $vaerdi ) {
$arrTal[$noegle] = $vaerdi*2;
}
// De nye værdier udskrives
foreach( $arrTal as $noegle => $vaerdi ) {
echo "[" . $noegle . "] = " . $vaerdi . "<br />";
}
/*
Udskriver:
[0] = 88
[1] = 156
[2] = 178
[3] = 216
[4] = 68
[5] = 24
*/
?>
Multi-dimensionale arrays:
Som tidligere nævnt, kaldes et array som indeholder et andet array for et multi-dimensionalt array. Vi kan bruge eksemplet fra før, med navne på medarbejdere i virksomheden. Vi ønsker nu at dele medarbejderne op i afdelinger:
<?php
// Et overordnet array oprettes med afdelingerne i
$arrAfd = array(
"ledelse" => array(),
"indkoeb" => array(),
"salg" => array(),
"support" => array()
);
// Et array er nu oprettet for hver afdeling og der kan tilføjes navne til dem
// Indsæt - en ad gangen
$arrAfd["ledelse"][] = "John";
$arrAfd["indkoeb"][] = "Mogens";
$arrAfd["salg"][] = "Pia";
// Indsæt - flere ad gangen
$arrAfd["support"] = array("Susanne", "Rikke");
// Udskrivning - en ad gangen
echo $arrAfd["ledelse"][0]; // John
echo $arrAfd["salg"][0]; // Pia
echo $arrAfd["support"][1]; // Rikke
// Udskrivning - flere ad gangen
foreach( $arrAfd as $noegle => $vaerdi ) {
foreach( $vaerdi as $noegle2 => $vaerdi2 ) {
echo "[" . $noegle . "][" . $noegle2;
echo "] = " . $vaerdi2 . "<br />";
}
}
/*
Udskriver:
[ledelse][0] = John
[indkoeb][0] = Mogens
[salg][0] = Pia
[support][0] = Susanne
[support][1] = Rikke
*/
?>
Nu har jeg gennemgået de vigtigste principper indenfor arrays. Hvis du ikke allerede har gjort det, så vil jeg anbefale at du prøver dig frem ved at lave og lege med et par arrays selv, for at få lidt mere forståelse. Der er mange funktioner i PHP som er tilknyttet array(), og dem kan du evt. kigge nærmere på i manualen.
Artiklen er skrevet af Mikkel Rostved, som vi hermed bringer en stor tak til.
| Tilføjet af Martin Tygsen den 11-03-2005 - Hits: 4048 |
   |