В предыдущих занятиях мы познакомились с одномерными массивами:
<?php
$scores = [1, 2, 3, 4, 5];
либо
<?php
$rates = [
'Excellent' => 5,
'Good' => 4,
'OK' => 3,
'Bad' => 2,
'Very Bad' => 1
];
И $scores, и $rate являются одномерными массивами.
Многомерный массив - это массив, который имеет более одного измерения. Например, двумерный массив - это массив массивов. Это похоже на таблицу строк и столбцов.
В PHP элементом массива может быть другой массив. Следовательно, чтобы определить многомерный массив, вы определяете массив массивов.
В следующем примере массив массивов используется для определения двумерного массива:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise' 1],
];
Чтобы отобразить все элементы в многомерном массиве, можно использовать функции print_r() и var_dump() следующим образом:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise', 1],
];
print_r($todo_list);
Вывод:
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
)
)
Чтобы добавить элемент в многомерный массив, используйте следующий синтаксис:
<?php
$array[] = [element1, element2, ...];
Например, чтобы добавить элемент в конец массива $tasks, вы используете следующее:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise', 1],
];
$tasks[] = ['Build something matter in PHP', 2];
print_r($tasks );
Чтобы удалить элемент из многомерного массива, вы можете использовать функцию unset().
В следующем примере функция unset() используется для удаления третьего элемента массива $tasks:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise',1],
];
unset($tasks[2]);
print_r($tasks);
Вывод:
Array
(
[0] => Array
(
[0] => Learn PHP programming
[1] => 2
)
[1] => Array
(
[0] => Practice PHP
[1] => 2
)
[3] => Array
(
[0] => Do exercise
[1] => 1
)
)
Обратите внимание, что функция unset () не меняет ключи массива. Чтобы переиндексировать ключ, вы можете использовать функцию array_splice (). Например:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise', 1],
];
array_splice($tasks[2], 2, 1);
print_r($tasks);
Вывод:
Array
(
[0] => Array
(
[0] => Learn PHP programming
[1] => 2
)
[1] => Array
(
[0] => Work
[1] => 8
)
[2] => Array
(
[0] => Do exercise
[1] => 1
)
)
$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>';
}
}
Вывод:
Learn PHP programming
2
Practice PHP
2
Work
8
Do exercise
1
Чтобы получить доступ к элементу в многомерном массиве, используйте квадратные скобки ([]):
<?php
$array[key][key][key]...
Например, чтобы узнать количество часов, потраченных на задачу «Learn PHP programming», вы используете следующий код:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do excercise', 1],
];
echo $tasks[0][1];