PHP Multidimensional Array

Summary: in this tutorial, you will learn how to define a PHP multidimensional array and manipulate its elements effectively.

Introduction to PHP multidimensional array

Typically, you have an array with one dimension. For example:

<?php

$scores = [1, 2, 3, 4, 5];Code language: HTML, XML (xml)

Or

<?php

$rates = [
	'Excellent' => 5,
	'Good' => 4,
	'OK' => 3,
	'Bad' => 2,
	'Very Bad' => 1
];Code language: HTML, XML (xml)

Both $scores and $rates are one-dimensional arrays.

A multidimensional array is an array that has more than one dimension. For example, a two-dimensional array is an array of arrays. It is like a table of rows and columns.

In PHP, an element in an array can be another array. Therefore, to define a multidimensional array, you define an array of arrays.

The following example uses an array of arrays to define a two-dimensional array:

<?php

$tasks = [
    ['Learn PHP programming', 2],
    ['Practice PHP', 2],
    ['Work', 8],
    ['Do exercise' 1],
];Code language: HTML, XML (xml)

In the $tasks array, the first dimension represents the tasks and the second dimension specifies hour spent for each.

To dispaly all the elements in a multidimensional array, you use the print_r() function like this:

<?php

$tasks = [
	['Learn PHP programming', 2],
	['Practice PHP', 2],
	['Work', 8],
	['Do exercise', 1],
];

print_r($todo_list);Code language: HTML, XML (xml)

Output:

Array
(    
    [0] => Array
        (
            [0] => Learn PHP programming
            [1] => 2
        )

    [1] => Array
        (
            [0] => Practice PHP
            [1] => 2
        )

    [2] => Array
        (
            [0] => Work
            [1] => 8
        )

    [3] => Array
        (
            [0] => Do exercise
            [1] => 1
        )

)Code language: PHP (php)

Adding elements to a PHP multidimensional array

To add an element to a multidimensional array, you use the the following syntax:

<?php

$array[] = [element1, element2, ...];Code language: HTML, XML (xml)

For example, to add an element at the end of the $tasks array, you use the following:

<?php

$tasks = [
	['Learn PHP programming', 2],
	['Practice PHP', 2],
	['Work', 8],
	['Do exercise', 1],
];

$tasks[] = ['Build something matter in PHP', 2];

print_r($tasks );Code language: HTML, XML (xml)

Removing elements from a PHP multidimensional array

To remove an element from a multidimensional array, you can use the unset() function.

The following example uses the unset() function to remove the third element of the $tasks array:

<?php

$tasks = [
	['Learn PHP programming', 2],
	['Practice PHP', 2],
	['Work', 8],
	['Do exercise',1],
];

unset($tasks[2]);

print_r($tasks);Code language: HTML, XML (xml)

Output:

Array
(
    [0] => Array
        (
            [0] => Learn PHP programming
            [1] => 2
        )

    [1] => Array
        (
            [0] => Practice PHP
            [1] => 2
        )

    [3] => Array
        (
            [0] => Do exercise
            [1] => 1
        )

)Code language: PHP (php)

Note that the unset() function doesn’t change the array’s keys. To reindex the key, you can use the array_splice() function. For example:

<?php

$tasks = [
	['Learn PHP programming', 2],
	['Practice PHP', 2],
	['Work', 8],
	['Do exercise', 1],
];

array_splice($tasks[2], 2, 1);

print_r($tasks);Code language: HTML, XML (xml)

Output:

Array
(
    [0] => Array
        (
            [0] => Learn PHP programming
            [1] => 2
        )

    [1] => Array
        (
            [0] => Work
            [1] => 8
        )

    [2] => Array
        (
            [0] => Do exercise
            [1] => 1
        )

)Code language: PHP (php)

Iterating over elements of a multidimensional array using foreach

To iterate a multidimensional array, you use a nested foreach loop like this:

<?php

$tasks = [
	['Learn PHP programming', 2],
	['Practice PHP', 2],
	['Work', 8],
	['Do exercise', 1],
];

foreach ($tasks as $task) {
	foreach ($task as $task_detail) {
		echo $task_detail . '<br>';
	}
}Code language: HTML, XML (xml)

Output:

Learn PHP programming
2
Practice PHP
2
Work
8
Do exercise
1Code language: PHP (php)

Accessing elements of a multidimensional array

To access an element in an multidimensional array, you use the square brackets ([]):

<?php

$array[key][key][key]...Code language: HTML, XML (xml)

For example, to access the number of hour spent for the "Learn PHP programming" task, you use the following code:

<?php

$tasks = [
	['Learn PHP programming', 2],
	['Practice PHP', 2],
	['Work', 8],
	['Do excercise', 1],
];

echo $tasks[0][1];Code language: HTML, XML (xml)

Sorting a multidimensional array

To sort a multidimensional array, you use the usort() function. For example:

<?php

$tasks = [
	['Learn PHP programming', 2],
	['Practice PHP', 2],
	['Work', 8],
	['Do excercise', 1],
];

usort($tasks, function ($a, $b) {
	return $a[1] <=> $b[1];
});

print_r($tasks);Code language: HTML, XML (xml)

In this example, we use the spaceship operator (<=>), which has been available since PHP 7, to compare the time spent for each task and sort the tasks by hours.

Output:

Array
(
    [0] => Array
        (
            [0] => Do excercise
            [1] => 1
        )

    [1] => Array
        (
            [0] => Learn PHP programming
            [1] => 2
        )

    [2] => Array
        (
            [0] => Practice PHP
            [1] => 2
        )

    [3] => Array
        (
            [0] => Work
            [1] => 8
        )

)Code language: PHP (php)

Summary

  • Use an array of arrays to create two or more multidimensional arrays in PHP.
Did you find this tutorial useful?