Bird
Raised Fist0
PHPprogramming~5 mins

Multidimensional arrays in PHP

Choose your learning style10 modes available
Introduction

Multidimensional arrays help you store data in a table or grid form, like rows and columns. They let you organize related data inside other arrays.

To store a list of students with their grades in different subjects.
To represent a chessboard with pieces on each square.
To keep track of a calendar with events for each day and time.
To manage a menu with categories and items inside each category.
Syntax
PHP
<?php
// Define a 2D array (array of arrays)
$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

// Access element in row 2, column 3
$value = $matrix[1][2];
?>

Each element of the main array is itself an array.

Use two sets of square brackets to access elements: first for row, second for column.

Examples
This is an empty multidimensional array with no elements.
PHP
<?php
// Empty multidimensional array
$empty = [];
?>
Array with only one element inside a nested array.
PHP
<?php
// 2D array with one row and one column
$single = [[42]];
?>
Gets 'blue' from the second row, first column.
PHP
<?php
// Access first element of second row
$colors = [
    ['red', 'green'],
    ['blue', 'yellow']
];
$firstColorSecondRow = $colors[1][0];
?>
Array inside array inside array, like layers of boxes.
PHP
<?php
// 3D array example
$box = [
    [
        [1, 2],
        [3, 4]
    ],
    [
        [5, 6],
        [7, 8]
    ]
];
?>
Sample Program

This program creates a 2D array to represent seats in rows. It prints the seating chart, changes one name, then prints the updated chart.

PHP
<?php
// Create a 2D array representing a small seating chart
$seatingChart = [
    ['Alice', 'Bob', 'Charlie'],
    ['David', 'Eva', 'Frank'],
    ['Grace', 'Hank', 'Ivy']
];

// Print original seating chart
echo "Original seating chart:\n";
foreach ($seatingChart as $rowIndex => $row) {
    echo "Row " . ($rowIndex + 1) . ": ";
    foreach ($row as $seat) {
        echo $seat . " ";
    }
    echo "\n";
}

// Change the seat of 'Eva' to 'Eve'
$seatingChart[1][1] = 'Eve';

// Print updated seating chart
echo "\nUpdated seating chart:\n";
foreach ($seatingChart as $rowIndex => $row) {
    echo "Row " . ($rowIndex + 1) . ": ";
    foreach ($row as $seat) {
        echo $seat . " ";
    }
    echo "\n";
}
?>
OutputSuccess
Important Notes

Accessing elements is fast, O(1) time, because you use direct indexes.

Multidimensional arrays use more memory because they store arrays inside arrays.

Common mistake: forgetting that each element is an array, so you must use multiple brackets to access nested data.

Use multidimensional arrays when you need to group related data in rows and columns. For simple lists, use one-dimensional arrays.

Summary

Multidimensional arrays store data in nested arrays, like tables or grids.

Use multiple square brackets to access or change elements.

They help organize complex data clearly and access it quickly.

Practice

(1/5)
1. What is a multidimensional array in PHP?
easy
A. An array containing one or more arrays inside it
B. An array with only string keys
C. An array that can only hold numbers
D. An array that cannot be changed after creation

Solution

  1. Step 1: Understand array nesting

    A multidimensional array is an array that contains other arrays as its elements.
  2. Step 2: Identify the correct definition

    An array containing one or more arrays inside it correctly describes this nesting, while others describe unrelated properties.
  3. Final Answer:

    An array containing one or more arrays inside it -> Option A
  4. Quick Check:

    Multidimensional array = nested arrays [OK]
Hint: Think of arrays inside arrays like boxes within boxes [OK]
Common Mistakes:
  • Confusing multidimensional arrays with simple arrays
  • Thinking keys must be strings only
  • Believing arrays cannot be changed
2. Which of the following is the correct way to access the element 'blue' in this array?
$colors = [['red', 'green'], ['blue', 'yellow']];
easy
A. $colors[1][0]
B. $colors[0][2]
C. $colors[2][1]
D. $colors[1][1]

Solution

  1. Step 1: Identify the position of 'blue'

    'blue' is in the second inner array (index 1) and is the first element (index 0) there.
  2. Step 2: Use correct indices to access

    Accessing $colors[1][0] retrieves 'blue'. Other options point to wrong indices or elements.
  3. Final Answer:

    $colors[1][0] -> Option A
  4. Quick Check:

    Second array, first element = 'blue' [OK]
Hint: Count arrays and elements starting at zero [OK]
Common Mistakes:
  • Using wrong index numbers
  • Confusing first and second arrays
  • Trying to access non-existing elements
3. What will be the output of this PHP code?
$matrix = [[1, 2], [3, 4]];
echo $matrix[0][1] + $matrix[1][0];
medium
A. 9
B. 7
C. 5
D. Error

Solution

  1. Step 1: Identify the values at given indices

    $matrix[0][1] is 2 and $matrix[1][0] is 3.
  2. Step 2: Calculate the sum

    2 + 3 equals 5, so the output is 5.
  3. Final Answer:

    5 -> Option C
  4. Quick Check:

    2 + 3 = 5 [OK]
Hint: Add values at given indices carefully [OK]
Common Mistakes:
  • Mixing up indices
  • Adding wrong elements
  • Expecting string output
4. Find the error in this code snippet:
$arr = [[1, 2], [3, 4];
echo $arr[1][1];
medium
A. Missing closing bracket for the first array
B. Missing closing bracket for the outer array
C. Incorrect index used to access element
D. Missing semicolon after echo statement

Solution

  1. Step 1: Check array syntax

    The array starts with [[ but only one closing bracket ] is present before the semicolon.
  2. Step 2: Identify missing bracket

    The outer array requires a closing bracket ], so the code should end with ]];
  3. Final Answer:

    Missing closing bracket for the outer array -> Option B
  4. Quick Check:

    Outer array brackets must match [OK]
Hint: Count opening and closing brackets carefully [OK]
Common Mistakes:
  • Confusing inner and outer brackets
  • Ignoring syntax errors
  • Assuming semicolon fixes bracket issues
5. Given this multidimensional array representing students and their scores:
<pre>$students = [
['name' => 'Alice', 'scores' => [85, 90]],
['name' => 'Bob', 'scores' => [78, 82]],
['name' => 'Charlie', 'scores' => [92, 88]]
];

Which code correctly calculates and prints the average score of Bob?
hard
A. $avg = array_sum($students[2]['scores']) / count($students[2]['scores']);
echo $avg;
B. $avg = array_sum($students['Bob']['scores']) / count($students['Bob']['scores']);
echo $avg;
C. $avg = array_sum($students[1]['score']) / count($students[1]['score']);
echo $avg;
D. $avg = array_sum($students[1]['scores']) / count($students[1]['scores']);
echo $avg;

Solution

  1. Step 1: Locate Bob's data in the array

    Bob is at index 1, and his scores are under the key 'scores'.
  2. Step 2: Calculate average correctly

    Use array_sum and count on $students[1]['scores'] to get average. $avg = array_sum($students[1]['scores']) / count($students[1]['scores']);
    echo $avg; does this correctly.
  3. Final Answer:

    $avg = array_sum($students[1]['scores']) / count($students[1]['scores']); echo $avg; -> Option D
  4. Quick Check:

    Index 1 and 'scores' key used correctly [OK]
Hint: Use numeric index for array, string keys for inner arrays [OK]
Common Mistakes:
  • Using string key for outer array
  • Misspelling 'scores' key
  • Using wrong index for Bob
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard