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?
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"
.
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’]`
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’.
1 curtida
Pronto! Agora está entendido. Mais um conhecimento para a caixola!
Não vi o botão de ‘resolvido’ mas está claro para mim agora.
@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.
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).