Arrays Multidimensionais no PHP

Nos capítulos anteriores deste tutorial, já sabemos que um array é uma lista simples de pares de número/valor.

No entanto, às vezes você deseja armazenar valores com mais de um chave.

Você pode armazenar usando matrizes multidimensionais.

PHP - Matrizes multidimensionais

Matrizes multidimensionais são matrizes que contêm uma ou mais matrizes.

O PHP pode entender matrizes bidimensionais, tridimensionais, quadrimensionais, cinquessimensionais e até mais. No entanto, arrays com mais de três níveis de profundidade são difíceis de gerenciar para a maioria das pessoas.

Notas:A dimensão do array indica o número de índices que você precisa para selecionar um elemento.

  • Para um array bidimensional, você precisa de dois índices para selecionar um elemento
  • Para um array tridimensional, você precisa de três índices para selecionar um elemento

PHP - Matriz bidimensional

Uma matriz bidimensional é uma matriz dentro de uma matriz (um array tridimensional é uma matriz dentro de uma matriz dentro de uma matriz).

Primeiro, vamos olhar para a tabela a seguir:

Marca Estoque Vendas
Volvo 33 20
BMW 17 15
Saab 5 2
Land Rover 15 11

Podemos armazenar os dados da tabela acima em uma matriz bidimensional, assim:

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

Agora, este array bidimensional contém quatro arrays e tem dois índices (índices): linha e coluna.

Para acessar elementos do array $cars, devemos usar dois índices (linha e coluna):

Exemplo

<?php
echo $cars[0][0].": Estoque: ".$cars[0][1].", Vendas: ".$cars[0][2].".<br>";
echo $cars[1][0].": Estoque: ".$cars[1][1].", Vendas: ".$cars[1][2].".<br>";
echo $cars[2][0].": Estoque: ".$cars[2][1].", Vendas: ".$cars[2][2].".<br>";
echo $cars[3][0].": Estoque: ".$cars[3][1].", Vendas: ".$cars[3][2].".<br>";
?>

Executar Exemplo

Também podemos usar outra repetição for dentro de uma repetição for para obter elementos do array $cars (ainda precisamos de dois índices):

Exemplo

<?php
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Número da Linha $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}
?>

Executar Exemplo