1
resposta

Olá, estive fazendo exercícios sobre arrays e me deparei com isso aqui.

Olá, me deparei com este exercício e não estou conseguindo resolver tão pouco compreender a resposta.

If you have the following array, how do you extract the value 3 from the array?

$a = array(
    array(
        0,
        1
    ),
    array(
        2,
        array(
            3
        )
    )
);

Resposta: $a[ 1 ][ 1 ][ 0 ];

1 resposta

Certo, vamos por parte....

Acredito que desta forma fique melhor de entender.

$a = array(array(0,1)  ,  array(2,array(3)));

Você tem um array chamado $a, dentro deste array você possui dois valores, você pode ver isso pela virgula que separa os valor

$a = array(array(0,1),

Após este virgula você tem mais um índice digamos assim.

,array(2,array(3)));

Então se eu quisesse acessar o primeiro valor do array $a seria

$a[0];

Que neste caso se você atribuisse isto a uma variavel iria retornar UM ARRAY, pois é o que você tem dentro da posição $a[0];

$primeiroValor = $a[0];
$segundoValor = $a[1];

print_r($primeiroValor);

//retorno do console após print_r seria:
Array ( [0] => 0 [1] => 1 )

Se você fosse acessar o segundo valor iria retornar o um array com duas posições também, só a segunda posição do array $a possui também um array de duas posições, no primeiro valor o número 2 e no segundo valor um array com somente um valor 3. Da uma olhada no retorno de $a[1];

$segundoValor = $a[1];
print_r($segundoValor);

//retorno do console após print_r seria:
Array ( [0] => 2    [1] => Array ( [0] => 3 ) )

Então para chegar no numero 3 eu preciso acessar a segunda posição do array $a[1]; (Lembrando que começa em 0 se fosse não definiu nenhuma chave de acesso). Após chegar no segundo valor, como ele retorna um array precisa ficar assim $a[1][1];

print_r($a[1][1]);

//retorno print_r seria
Array ( [0] => 3 )

Ainda assim retorna um array, e não número 3 que é o que a questão quer. Ele está na posição 0 deste array, então basta acessa-ló com echo, como não retorna mais array, não necessitamos mais de print_r :)

echo "Número acessado: ".$a[1][1][0];

//retorno do echo
Número acessado: 3

:) espero ter entendido qualquer coisa responde que tento lhe explicar se ficou mais alguma dúvida.