Skip to content

PHP Arrays Multi

So far, we’ve discussed arrays that are a single list of key/value pairs.

However, PHP allows you to create arrays that contain other arrays, enabling you to structure data in multiple dimensions.

These are known as multidimensional arrays.

A multidimensional array is essentially an array where each element can also be an array. You can visualize this as a table (2D array) or even a cube of data (3D array).

PHP supports arrays with many levels of nesting. However, arrays deeper than two or three levels can become complex to manage and reason about.

| | Think of dimensions like coordinates needed to pinpoint a value.

  • A one-dimensional array needs one index (e.g., $myArray[5]).
  • A two-dimensional array needs two indices (e.g., $myGrid[2][3]).
  • A three-dimensional array needs three indices (e.g., $myCube[1][4][0]). | | --- | --- |

The most common type of multidimensional array is the two-dimensional array, which is like an array of arrays. It’s perfect for representing data typically found in tables.

Consider this table of car inventory:

NameIn StockSold
Volvo2218
BMW1513
Saab52
Land Rover1715

We can store this data in a two-dimensional array using modern PHP syntax:

// Using modern short array syntax []
$cars = [
["Volvo", 22, 18],
["BMW", 15, 13],
["Saab", 5, 2],
["Land Rover", 17, 15]
];

The $cars array now contains four inner arrays. To access specific data, you need two indices: the first for the row (outer array index) and the second for the column (inner array index).

Accessing Elements:

<?php
// Modern array syntax
$cars = [
["Volvo", 22, 18],
["BMW", 15, 13],
["Saab", 5, 2],
["Land Rover", 17, 15]
];
echo $cars[0][0] . ": In stock: " . $cars[0][1] . ", sold: " . $cars[0][2] . ".<br>";
echo $cars[1][0] . ": In stock: " . $cars[1][1] . ", sold: " . $cars[1][2] . ".<br>";
echo $cars[2][0] . ": In stock: " . $cars[2][1] . ", sold: " . $cars[2][2] . ".<br>";
echo $cars[3][0] . ": In stock: " . $cars[3][1] . ", sold: " . $cars[3][2] . ".<br>";
// Example Output:
// Volvo: In stock: 22, sold: 18.
// BMW: In stock: 15, sold: 13.
// Saab: In stock: 5, sold: 2.
// Land Rover: In stock: 17, sold: 15.
?>

Looping Through Multidimensional Arrays:

Using nested foreach loops is often the most readable way to iterate over multidimensional arrays:

<?php
$cars = [
["Volvo", 22, 18],
["BMW", 15, 13],
["Saab", 5, 2],
["Land Rover", 17, 15]
];
echo "<h2>Car Inventory Details:</h2>";
foreach ($cars as $index => $car) {
echo "<p>**Car #" . ($index + 1) . "**</p>";
echo "<ul>";
echo "<li>Name: " . $car[0] . "</li>";
echo "<li>In Stock: " . $car[1] . "</li>";
echo "<li>Sold: " . $car[2] . "</li>";
echo "</ul>";
}
?>

You can also use associative keys for better readability, especially when dealing with structured data:

<?php
$carData = [
'Volvo' => ['stock' => 22, 'sold' => 18],
'BMW' => ['stock' => 15, 'sold' => 13],
'Saab' => ['stock' => 5, 'sold' => 2],
'Land Rover' => ['stock' => 17, 'sold' => 15]
];
echo "<h2>Car Inventory (Associative):</h2>";
foreach ($carData as $name => $data) {
echo "<p>**" . htmlspecialchars($name) . "**</p>";
echo "<ul>";
echo "<li>In Stock: " . htmlspecialchars($data['stock']) . "</li>";
echo "<li>Sold: " . htmlspecialchars($data['sold']) . "</li>";
echo "</ul>";
}
?>

Multidimensional arrays are useful for storing structured data like:

  • Configuration settings
  • Matrix or grid data (like spreadsheets or game boards)
  • Grouped data fetched from databases (e.g., users and their posts)
  • Representing complex relationships