Erro sintaxe array do PHP

php-mysql

#1

Fazendo um exercício do livro de PHP e MySql, me deparei com o seguinte erro:

Fatal error: Uncaught Error: [] operator not supported for strings in /Applications/MAMP/htdocs/tarefas/tarefas.php:25 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/tarefas/tarefas.php on line 25

Meu código é o seguinte:
<?php

if (array_key_exists('nome', $_GET)) {
	$_SESSION['lista_tarefas'][] = $_GET['nome'];
}

$lista_tarefas = [];
if (array_key_exists('lista_tarefas', $_SESSION)) {
	$lista_tarefas = $_SESSION['lista_tarefas'];
}


?>

Estou bastante intrigado com essa linha específica:
_SESSION['lista_tarefas'][] = _GET[‘nome’];
A intenção é criar um elemento para o array _SESSSION com a key “lista_tarega”. Até aí tudo bem.
Porém não compreendo aquele segundo par de chave.
Alguém consegue me explicar?


#2

Oi, @juliobarreto! Em PHP podemos criar novos elementos em um array usando a função array_push() dessa maneira:

$bebidas = [];

array_push($bebidas, "agua"); 

E também podemos usar o “atalho” [], assim:

$bebidas = [];

$bebidas[] = "agua"; 

Em ambos os casos teremos um array onde o índice 0 é a string "agua".


#3

Até aí eu entendi @evaldojuniorbento.

Minha dúvida é justamente porque o código que eu apresentei está diferente desses dois modelos de sintaxe.
Existe um par de chaves com uma key (no caso, ‘lista_tarefas’) e depois tem um par de chaves vazio. Vou copiar o a linha abaixo novamente:

`_SESSION['lista_tarefas'][] = _GET[‘nome’]`

#4

Oi, @juliobarreto.

Neste caso estamos lidando com um array multidimensional.

$_SESSION['lista_tarefas']; // é um array
$_SESSION['lista_tarefas'][] = $_GET['nome']; // adiciona um item no array

Podemos ter arrays dentro de arrays, daí vem o termo ‘multidimensional’.


#5

Pronto! Agora está entendido. Mais um conhecimento para a caixola!

Não vi o botão de ‘resolvido’ mas está claro para mim agora.


#6

@evaldojuniorbento
Eu me precipitei. A dúvida que eu tinha sobre a sintaxe do do array multidimensional foram sanadas. Porém meu código continua não funcionando e apresentando esse erro:

Fatal error: Uncaught Error: [] operator not supported for strings in /Applications/MAMP/htdocs/tarefas/tarefas.php:25 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/tarefas/tarefas.php on line 25

A linha 25 é essa:

$_SESSION['lista_tarefas'][] = $_GET['nome'];

Alguma idéia?
Jogando o erro no google encontrei algumas referências a um bug no PHP 7.1
Não sei se procede.


#7

Oi, @juliobarreto. Me parece que o conteúdo de $_SESSION['lista_tarefas'] é uma string e não um array.

Confere se é isso mesmo usando, por exemplo, print_r($_SESSION['lista_tarefas']);. Se for isso mesmo basta limpar essa varißavel ou até mesmo limpar os cookies no navegador (apenas para localhost).