Matriz Multidimensional PHP

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 $scorese $ratessã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 $tasksmatriz, 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 $tasksarray, 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 foreachloop 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
1Linguagem 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *