A PHP array is an ordered map that stores multiple values under one variable. PHP arrays act as both zero-indexed lists (['red', 'blue']) and key-value dictionaries (['role' => 'admin']), and they support nesting for complex records.
Use short square-bracket syntax [] to create arrays, and check keys safely with isset() or the null coalescing operator ??.
<?php
declare(strict_types=1);
// Indexed list
$languages = ["PHP", "JavaScript", "Python"];
$languages[] = "SQL"; // Append item
// Associative key-value array
$profile = [
"username" => "tanvir",
"role" => "developer",
"active" => true,
];
// Multidimensional array (rows of associative arrays)
$users = [
["id" => 1, "name" => "Amina", "score" => 91],
["id" => 2, "name" => "Bilal", "score" => 76],
["id" => 3, "name" => "Farah", "score" => 88],
];
echo "Primary language: " . $languages[0] . PHP_EOL;
echo "Role: " . ($profile["role"] ?? "guest") . PHP_EOL;
Instead of writing manual foreach loops for every transformation, use PHP's built-in array helpers to filter and reshape lists cleanly.
<?php
declare(strict_types=1);
$users = [
["id" => 1, "name" => "Amina", "score" => 91],
["id" => 2, "name" => "Bilal", "score" => 76],
["id" => 3, "name" => "Farah", "score" => 88],
];
$honors = array_filter($users, fn (array $u): bool => $u['score'] >= 85);
$honorNames = array_column($honors, 'name');
print_r($honorNames);
Notice how array_filter() keeps original keys intact, while array_values() re-indexes a filtered list starting from 0.
$user['phone'] without checking triggers an "Undefined array key" warning in PHP 8. Use $user['phone'] ?? ''.in_array() loose matching: Always pass true as the third argument (in_array($needle, $haystack, true)) to enforce strict type checking.array_filter() resets numeric keys: Call array_values() afterward if you plan to serialize the array as a JSON list ([...]).Use array_key_exists('key', $array) when the value might be null, or isset($array['key']) when you also want to verify the value is not null.
Use asort($arr) to sort ascending while preserving keys, or usort($rows, fn($a, $b) => $a['score'] <=> $b['score']) for multidimensional arrays.
array_is_list() do in PHP 8.1+?array_is_list($arr) returns true when an array's keys are consecutive integers starting at 0 (0, 1, 2...).
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.