Normalmente, Temos uma arrays com uma dimensão:
$pontuacao = [1, 2, 3, 4, 5];
ou
<?php
$avaliacao = [
'Excelente' => 5,
'Bom' => 4,
'OK' => 3,
'Mau' => 2,
'Muito Mau' => 1
];
Mas podemos ter arrays com mais de uma dimensão. Um array bidimensional é como uma tabela de linhas e colunas.
Array Multidimensional
Em PHP, um elemento em um array pode ser outro array e cada elemento no sub-array pode ser ainda um outro array e assim por diante.
Veja abaixo exemplo de um array bidimensional:
<?php
$tarefas = [
['aprender php', 2],
['praticar php', 2],
['trabalhar', 8],
['execícios', 1],
];
echo "<pre>";
print_r($tarefas);
echo "</pre>";
?>
exibindo o resultado com print_():
Array
(
[0] => Array
(
[0] => aprender php
[1] => 2
)
[1] => Array
(
[0] => praticar php
[1] => 2
)
[2] => Array
(
[0] => trabalhar
[1] => 8
)
[3] => Array
(
[0] => execícios
[1] => 1
)
)
Para exibir um elemento do array:
<?php
...
echo $tarefas[0][0];
?>
Vamos ver outro exemplo usando o método array() para vermos mais claramente. Esse exemplo usa do método associativo do array. Mas podemos usar números também.
<?php
$pontos = array(
"maria" => array (
"matematica" => 7.5,
"portugues" => 8.0,
"biologia" => 9.5
),
"paulo" => array (
"matematica" => 5.5,
"portugues" => 4.5,
"biologia" => 10.0
)
);
echo "<pre>";
print_r($pontos);
echo "</pre>";
echo "Nota em Matemática: " . $pontos['maria']['matematica'] . "<br>" ;
echo "Nota em Biologia: " . $pontos['maria']['biologia'];
?>
resultado:
Array
(
[maria] => Array
(
[matematica] => 7.5
[portugues] => 8
[biologia] => 9.5
)
[paulo] => Array
(
[matematica] => 5.5
[portugues] => 4.5
[biologia] => 10
)
)
Nota em Matemática: 7.5
Nota em Biologia: 9.5
ACESSANDO OS ELEMENTOS USANDO FOREACH
Como usaríamos foreach para interagir com os elementos de um array multidimensional?
<?php
$tarefas = [
['aprender php', 2],
['praticar php', 2],
['trabalhar', 8],
['execícios', 1],
];
$tarefas[] = ['repraticar', 5];
foreach($tarefas as $tarefa)
foreach($tarefa as $tarefa_detalhe)
echo "<br>" . $tarefa_detalhe;
?>
Acima, retirei a função print_r( ) para resumir. Veja o resultado:
aprender php
2
praticar php
2
trabalhar
8
execícios
1
repraticar
5
Adicionando Elementos em um Array Bidimensional
Para adicionar um elemento em nosso array acima, usamos a seguinte sintaxe:
<?php
$tarefas = [
['aprender php', 2],
['praticar php', 2],
['trabalhar', 8],
['execícios', 1],
];
$tarefas[] = ['repraticar', 5];
echo "<pre>";
print_r($tarefas);
echo "</pre>";
?>
Acima adicionamos um elemento no índice seguinte, por exemplo, acima o elemento [‘execícios’, 1] é o índice [4][0] e [4][1] então o elemento $tarefas[] = [‘repraticar’, 5]; será o [5][0] e [5][1].
Removendo elementos de um array multidimensional PHP
Para remover um elemento ou todos eles usamos a função unset();
<?php
$tarefas = [
['aprender php', 2],
['praticar php', 2],
['trabalhar', 8],
['execícios', 1],
];
$tarefas[] = ['repraticar', 5];
unset($tarefas[1]);
unset($tarefas[3]);
unset($tarefas[0]);
echo "<pre>";
print_r($tarefas);
echo "</pre>";
?>
Vejamos o resultado:
Array
(
[2] => Array
(
[0] => trabalhar
[1] => 8
)
[4] => Array
(
[0] => repraticar
[1] => 5
)
)
Usando usort() para Ordenar os Elementos em um Array Multidimensional
Para ordenar um array multidimensional, usamos a função usort() dessa maneira.
<?php
$tarefas = [
['aprender php', 2],
['praticar php', 2],
['trabalhar', 8],
['execícios', 1],
];
$tarefas[] = ['repraticar', 5];
usort($tarefas, function($a, $b ){ return $a[0] <=> $b[0]; });
foreach($tarefas as $tarefa)
foreach($tarefa as $tarefa_detalhe)
echo "<br>" . $tarefa_detalhe;
?>
Acima ordeno o índice 0, isto é, as tarefas ‘aprender php’, ‘praticar php’… se quisesse ordenar os números bastaria alterar 0 por 1.
Resultado:
aprender php
2
execícios
1
praticar php
2
repraticar
5
trabalhar
8
Obs.: O operador <=> está disponível desde o PHP 7.0 é usado par a ordenação aqui.
Mais um Exemplo de Array Bidimensional
Para encerrar esse artigo veremos mais um exemplos de arrays/matrizes com duas dimensões. Iremos usar a forma [ ] de se criar o array por ser mais fácil e mais legível.
Abaixo também ordenamos por nome(índice 0).
<?php
$dados_pessoais = [
['Maria', 34,'Rua da machadinha', 'maria@email' ],
['Paulo', 45, 'Rua Andrade', 'paulo@email'],
['Pedro', 84, 'Trevessa dos Travessos', 'pedro@email'],
['Joaozinho', 15, 'Av dos Pestinhas', 'joaozinhodaspiadas@email'],
];
usort($dados_pessoais, function($a, $b ){ return $a[0] <=> $b[0]; });
foreach($dados_pessoais as $dado_pessoal) {
echo "<br>";
foreach($dado_pessoal as $dado)
echo "<br>" . $dado;
}
?>
Joaozinho
15
Av dos Pestinhas
joaozinhodaspiadas@email
Maria
34
Rua da machadinha
maria@email
Paulo
45
Rua Andrade
paulo@email
Pedro
84
Trevessa dos Travessos
pedro@email
Conclusão
Um array multidimensional em PHP é uma matriz que contém outras matrizes como seus elementos.
Um array simples em PHP é mais fácil de ser manipulado e acessado, porém um array multidimensional permite organizar e armazenar dados de forma mais estruturada e hierárquica.
Comments on “PHP – Aula 021: Arrays Multidimensionais”