Desestruturação de Matriz Simétrica no PHP 7.1

carros-matriz

O PHP 7.1 trouxe destructuring nativo para arrays, recurso perfeito para lidar com matrizes simétricas usadas em cálculos matemáticos.

1. Estrutura base

$matriz = [
    [2, 4, 6],
    [4, 5, 9],
    [6, 9, 0],
];

Cada linha é idêntica à respectiva coluna, característica das matrizes simétricas.

2. Extraindo valores com list

[$a1, $a2, $a3] = $matriz[0];
[$b1, $b2, $b3] = $matriz[1];

Também é possível combinar múltiplas linhas em um único comando:

[$linha1, $linha2, $linha3] = $matriz;
[$l1c1, $l1c2, $l1c3] = $linha1;

3. Funções utilitárias

function somaDiagonal(array $matriz): int
{
    $soma = 0;
    foreach ($matriz as $i => [$a, , $c]) {
        $soma += $i === 0 ? $a : ($i === 1 ? $matriz[$i][$i] : $c);
    }
    return $soma;
}

O exemplo usa desestruturação parcial ([$a, , $c]).

4. Iterando com foreach

foreach ($matriz as $indice => [$col1, $col2, $col3]) {
    printf("Linha %d => %d %d %d\n", $indice, $col1, $col2, $col3);
}

O PHP ignora colunas não usadas, o que deixa o código expressivo.

5. Guard clauses

[$a, $b, $c] = $matriz[0] ?? throw new InvalidArgumentException('Matriz vazia');

A instrução acima garante que o arquivo contenha ao menos uma linha.

6. Quando não usar

  • Matrizes extremamente grandes (prefira SplFixedArray).
  • Estruturas não simétricas onde os índices mudam com frequência.

Mesmo assim, para algoritmos de álgebra linear embutidos em projetos PHP, a desestruturação diminui erros de índice e torna o código idiomático.

← Voltar para Blog — Artigos sobre PHP, JavaScript e DevOps