
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.