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: PHP (php)Or
<?php
$rates = [
'Excellent' => 5,
'Good' => 4,
'OK' => 3,
'Bad' => 2,
'Very Bad' => 1
];Code language: PHP (php)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: PHP (php)In the $tasks array, the first dimension represents the tasks, and the second dimension specifies the hours spent for each.
To display 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($tasks);Code language: PHP (php)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 following syntax:
<?php
$array[] = [element1, element2, ...];Code language: PHP (php)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: PHP (php)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: PHP (php)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: PHP (php)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: PHP (php)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 a multidimensional array, you use the square brackets ([]):
<?php
$array[key][key][key]...Code language: PHP (php)For example, to access the number of hours spent on 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: PHP (php)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: PHP (php)In this example, we use the spaceship operator (<=>), which has been available since PHP 7, to compare the time spent on 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.