Bom dia colega
Sem o parâmetro true (Padrão: Objeto)
Quando você faz $texto = json_decode($pegaTexto);, o PHP cria um objeto genérico da classe stdClass.
- Como acessar os dados: Você deve usar a sintaxe de setas.
Exemplo: $texto->nome ou $texto->profissao. - Quando usar: É muito comum utilizar assim quando você quer manter uma sintaxe orientada a objetos ou quando pretende mapear esses dados para uma classe específica depois.
Com o parâmetro true (Array Associativo)
Quando você faz $texto = json_decode($pegaTexto, true);, o PHP transforma o JSON em um array associativo (onde os índices são nomes).
- Como acessar os dados: Você usa colchetes e as chaves (strings).
Exemplo: $texto['nome'] ou $texto['profissao']. - Quando usar: É muito útil quando você precisa iterar sobre os dados (usar
foreach), usar funções nativas de array do PHP (como filtrar ou ordenar) ou quando a estrutura dos dados é mais simples e não requer o comportamento de um objeto.
Resumo para o exercício
No seu código:
$texto = json_decode($pegaTexto);
var_dump($texto);
// Isso vai imprimir algo como: object(stdClass)
Na resposta do instrutor:
var_dump(json_decode($stringJson, true));
// Isso vai imprimir algo como: array(3)
Ambos funcionam para ler os dados, mas a forma de escrever o código depois muda (seta -> versus colchetes []).