PHP kode på en mørk skærm
← Tilbage til GuidesBegynder - Avanceret

PHP Arrays

Den komplette guide til arrays i PHP — fra grundlæggende til avanceret array-håndtering.

Foto: Pankaj Patel / Unsplash

Hvad er et PHP array?

Et array er en datastruktur der kan indeholde flere værdier under ét variabelnavn. I PHP er arrays ekstremt fleksible — de fungerer samtidig som lister, ordbøger (dictionaries) og køer. Uanset om du arbejder med en simpel liste af navne eller en kompleks datastruktur fra en API, er arrays det primære værktøj.

PHP har tre typer arrays: indexed arrays (numeriske nøgler), associative arrays (navngivne nøgler) og multidimensional arrays (arrays inde i arrays). Moderne PHP 8+ har desuden tilføjet nye features der gør array-håndtering endnu mere effektiv.

Indexed Arrays

Indexed arrays bruger numeriske nøgler der starter fra 0. De er ideelle til ordnede lister hvor positionen er vigtig.

<?php
// Opret et indexed array
$frameworks = ['Laravel', 'Symfony', 'CodeIgniter', 'Slim'];

// Tilgå elementer via index
echo $frameworks[0]; // Laravel
echo $frameworks[2]; // CodeIgniter

// Tilføj element
$frameworks[] = 'CakePHP';

// Loop med foreach
foreach ($frameworks as $index => $framework) {
    echo "{$index}: {$framework}\n";
}

// Antal elementer
echo count($frameworks); // 5

count() returnerer antal elementer. Brug empty() til at tjekke om et array er tomt.

Associative Arrays

Associative arrays bruger navngivne nøgler (strings) i stedet for tal. De minder om dictionaries i Python eller objects i JavaScript, og er perfekte til strukturerede data.

<?php
// Associative array
$config = [
    'database' => 'mysql',
    'host'     => 'localhost',
    'port'     => 3306,
    'charset'  => 'utf8mb4',
];

// Tilgå via nøgle
echo $config['database']; // mysql

// Tilføj eller opdater
$config['timeout'] = 30;
$config['port'] = 5432; // Overskriver

// Tjek om nøgle eksisterer
if (array_key_exists('host', $config)) {
    echo "Host: {$config['host']}";
}

// Null coalescing - sikker tilgang
$debug = $config['debug'] ?? false;

Null coalescing operatoren ?? er ideel til at håndtere manglende array-nøgler uden fejl.

Multidimensional Arrays

Når du har brug for at repræsentere komplekse datastrukturer — som databaseresultater, API-svar eller konfigurationer — bruges arrays inde i arrays.

<?php
$users = [
    [
        'name'  => 'Anna',
        'email' => 'anna@example.dk',
        'roles' => ['admin', 'editor'],
    ],
    [
        'name'  => 'Bo',
        'email' => 'bo@example.dk',
        'roles' => ['viewer'],
    ],
];

// Tilgå nested data
echo $users[0]['name'];      // Anna
echo $users[0]['roles'][1];  // editor

// Loop gennem nested arrays
foreach ($users as $user) {
    echo "{$user['name']}: " . implode(', ', $user['roles']) . "\n";
}

Vigtige Array-funktioner

PHP har over 80 indbyggede array-funktioner. Her er de mest brugte — de tre funktioner du bør mestre først er array_map, array_filter og array_reduce.

array_map — Transformér hvert element

<?php
$prices = [100, 250, 75, 500];

// Tilføj moms (25%)
$withVat = array_map(fn($price) => $price * 1.25, $prices);
// [125, 312.5, 93.75, 625]

// Formatér som danske kroner
$formatted = array_map(
    fn($price) => number_format($price, 2, ',', '.') . ' DKK',
    $withVat
);
// ["125,00 DKK", "312,50 DKK", ...]

array_filter — Filtrér elementer

<?php
$numbers = [1, 0, 3, null, 5, '', 7];

// Fjern falsy values
$clean = array_filter($numbers);
// [1, 3, 5, 7]

// Custom filter: kun lige tal
$even = array_filter([1, 2, 3, 4, 5, 6], fn($n) => $n % 2 === 0);
// [2, 4, 6]

// Filtrér users med admin-rolle
$admins = array_filter($users, fn($user) =>
    in_array('admin', $user['roles'])
);

array_reduce — Reducer til én værdi

<?php
$cart = [
    ['product' => 'Tastatur', 'price' => 799],
    ['product' => 'Mus',      'price' => 399],
    ['product' => 'Monitor',  'price' => 3499],
];

// Summer alle priser
$total = array_reduce(
    $cart,
    fn($sum, $item) => $sum + $item['price'],
    0
);
echo $total; // 4697

Flere nyttige funktioner

array_merge()Sammenfletter to eller flere arrays
array_unique()Fjerner duplikerede værdier
array_slice()Udtræk en del af et array
array_keys()Returnerer alle nøgler
array_values()Returnerer alle værdier (reindexeret)
array_combine()Opret array fra nøgle- og værdi-arrays
sort() / asort()Sortér efter værdi (med/uden nøgler)
usort()Sortér med custom sammenligningsfunktion

Moderne PHP Array Features

PHP 7.4+ og 8.x har indført flere features der gør array-arbejde mere elegant. Disse features er tilgængelige i alle aktive PHP-versioner.

Spread Operator (...)

<?php
$frontend = ['React', 'Vue', 'Svelte'];
$backend  = ['Laravel', 'Symfony', 'Slim'];

// Merge med spread operator
$allFrameworks = [...$frontend, ...$backend];
// ['React', 'Vue', 'Svelte', 'Laravel', 'Symfony', 'Slim']

// I funktionskald
function sum(int ...$numbers): int {
    return array_sum($numbers);
}
echo sum(1, 2, 3, 4); // 10

Array Destructuring

<?php
// List-syntax (PHP 7.1+)
$coordinates = [55.6761, 12.5683];
[$lat, $lng] = $coordinates;

// Med nøgler (associative destructuring)
$user = ['name' => 'Henrik', 'age' => 35, 'city' => 'København'];
['name' => $name, 'city' => $city] = $user;
echo "{$name} bor i {$city}"; // Henrik bor i København

// I foreach
$points = [[1, 2], [3, 4], [5, 6]];
foreach ($points as [$x, $y]) {
    echo "({$x}, {$y})\n";
}

Lær PHP med Video

freeCodeCamps fulde PHP-kursus dækker også arrays og array-funktioner i detaljer:

PHP Programming Language Tutorial af freeCodeCamp.org

Best Practices for PHP Arrays

+Brug altid den korte array-syntax [] i stedet for array()
+Brug array_map/filter/reduce i stedet for manuelle foreach-loops til datatransformation
+Undgå at ændre et array mens du itererer over det med foreach
+Brug null coalescing (??) til sikker tilgang af nøgler der måske ikke eksisterer
+Brug type declarations (array) i funktionssignaturer for bedre fejlfinding
+Overvej at bruge typed collections (value objects) i stedet for nested arrays i store projekter