Resumo : neste tutorial, você aprenderá como definir um array multidimensional PHP e manipular seus elementos de forma eficaz.
Introdução ao array multidimensional PHP
Normalmente, você tem uma matriz com uma dimensão. Por exemplo:
<?php
$scores = [1, 2, 3, 4, 5];
Linguagem de código: HTML, XML ( xml )
Ou
<?php
$rates = [
'Excellent' => 5,
'Good' => 4,
'OK' => 3,
'Bad' => 2,
'Very Bad' => 1
];
Linguagem de código: HTML, XML ( xml )
Ambos $scores
e $rates
são matrizes unidimensionais.
Uma matriz multidimensional é uma matriz que possui mais de uma dimensão. Por exemplo, uma matriz bidimensional é uma matriz de matrizes. É como uma tabela de linhas e colunas.
Em PHP, um elemento em um array pode ser outro array. Portanto, para definir um array multidimensional, você define um array de arrays.
O exemplo a seguir usa uma matriz de matrizes para definir uma matriz bidimensional:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise' 1],
];
Linguagem de código: HTML, XML ( xml )
Na $tasks
matriz, a primeira dimensão representa as tarefas e a segunda dimensão especifica as horas gastas para cada uma.
Para exibir todos os elementos em um array multidimensional, você usa a print_r()
função assim:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise', 1],
];
print_r($todo_list);
Linguagem de código: HTML, XML ( xml )
Saída:
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
)
)
Linguagem de código: PHP ( php )
Adicionando elementos a um array multidimensional PHP
Para adicionar um elemento a um array multidimensional, use a seguinte sintaxe:
<?php
$array[] = [element1, element2, ...];
Linguagem de código: HTML, XML ( xml )
Por exemplo, para adicionar um elemento no final do $tasks
array, você usa o seguinte:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise', 1],
];
$tasks[] = ['Build something matter in PHP', 2];
print_r($tasks );
Linguagem de código: HTML, XML ( xml )
Removendo elementos de um array multidimensional PHP
Para remover um elemento de um array multidimensional, você pode usar a unset()
função.
O exemplo a seguir usa a unset()
função para remover o terceiro elemento da matriz $tasks:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise',1],
];
unset($tasks[2]);
print_r($tasks);
Linguagem de código: HTML, XML ( xml )
Saída:
Array
(
[0] => Array
(
[0] => Learn PHP programming
[1] => 2
)
[1] => Array
(
[0] => Practice PHP
[1] => 2
)
[3] => Array
(
[0] => Do exercise
[1] => 1
)
)
Linguagem de código: PHP ( php )
Observe que a unset()
função não altera as chaves do array. Para reindexar a chave, você pode usar a array_splice()
função. Por exemplo:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do exercise', 1],
];
array_splice($tasks[2], 2, 1);
print_r($tasks);
Linguagem de código: HTML, XML ( xml )
Saída:
Array
(
[0] => Array
(
[0] => Learn PHP programming
[1] => 2
)
[1] => Array
(
[0] => Work
[1] => 8
)
[2] => Array
(
[0] => Do exercise
[1] => 1
)
)
Linguagem de código: PHP ( php )
Iterando elementos de um array multidimensional usando foreach
Para iterar um array multidimensional, você usa um foreach
loop aninhado como este:
<?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>';
}
}
Linguagem de código: HTML, XML ( xml )
Saída:
Learn PHP programming
2
Practice PHP
2
Work
8
Do exercise
1
Linguagem de código: PHP ( php )
Acessando elementos de um array multidimensional
Para acessar um elemento em um array multidimensional, você usa colchetes ( []
):
<?php
$array[key][key][key]...
Linguagem de código: HTML, XML ( xml )
Por exemplo, para acessar o número de horas gastas na "Learn PHP programming"
tarefa, você usa o seguinte código:
<?php
$tasks = [
['Learn PHP programming', 2],
['Practice PHP', 2],
['Work', 8],
['Do excercise', 1],
];
echo $tasks[0][1];
Linguagem de código: HTML, XML ( xml )
Classificando uma matriz multidimensional
Para classificar um array multidimensional, você usa a função usort(). Por exemplo:
<?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);
Linguagem de código: HTML, XML ( xml )
Neste exemplo, utilizamos o operador nave espacial ( <=>
), disponível desde o PHP 7, para comparar o tempo gasto em cada tarefa e ordenar as tarefas por horas.
Saída:
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
)
)
Linguagem de código: PHP ( php )
Resumo
- Use um array de arrays para criar dois ou mais arrays multidimensionais em PHP.