Brincando com arrays múltiplos em PHP

Quer ver algo que me enrolava todo? Arrays múltiplos!

Como faço paga pegar alguns dos seus elementos de um array múltiplo?

Exemplo para diversão e aprendizado:

Array ( [joao] => Array ( [nota-provas] => Array ( [0] => 4 [1] => 5 [2] => 6 ) [nota-final] => 5 ) [maria] => Array ( [nota-provas] => Array ( [0] => 7 [1] => 5 [2] => 6 ) [nota-final] => 6 ) [omar] => Array ( [nota-provas] => Array ( [0] => 4 [1] => 5 [2] => 3 ) [nota-final] => 4 ) )

Exemplificando preciso pegar o valor de:

  • nota final do joao
  • notas das provas da maria

Como faço isso?

Precisamos fazer a moda do Jack Estripador, vamos por partes.

Veja que temos a palavra chave array 3 vezes, portando temos o array externo com dois arrays internos. Este array pode ser escrito de forma a torná-lo mais comprensível assim:

Deixando mais legível

$notas = array(
    'joao' => array(
        'nota-provas' => array(4, 5, 6),
        'nota-final' => 5
    ),
    'maria' => array(
        'nota-provas' => array(7, 5, 6),
        'nota-final' => 6
    ),
    'omar' => array(
        'nota-provas' => array(4, 5, 3),
        'nota-final' => 4
    )
);

Depois disso fica mais simples pegar as partes. Precisamos usar uma fun ção de debug como a var_dump() ou a print_r()

Capturar o array completo:
print_r($notas);

Capturar a nota-final do joao
print_r($notas['joao']['nota-final']);

Pegar as nota-provas da maria
print_r($notas['maria']['nota-provas']);

Nota da segunda prova da maria
print_r($notas['maria']['nota-provas'][1]);

Escrevendo o array sem a palavra chave array

Esta sintaxe é aceita somente nas versões 7 e superior (se tiver umam informação mais precisa, favor comentar)

$notas = [
    'joao' => [
        'nota-provas' => [4, 5, 6],
        'nota-final' => 5
    ],
    'maria' => [
        'nota-provas' => [7, 5, 6],
        'nota-final' => 6
    ],
    'omar' => [
        'nota-provas' => [4, 5, 3],
        'nota-final' => 4
    ]
];

Veja que para isso trocamos "array(" por "[" e ")" por "]".

Caso tenha alguma observação a fazer ou uma sugestão para deixar mais claro, por favor clique acima em Comentários e compartilhe conosco. Gratidão.