# Erro sintaxe array do PHP

**URL:** <https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001>\
**Category:** Sobre o Fórum\
**Tags:** php-mysql\
**Created:** [Abril 17, 2018, 9:41am UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001 "2018-04-17T09:41:50Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![juliobarreto](https://avatars.discourse-cdn.com/v4/letter/j/ba8739/32.png) [@juliobarreto](https://forum.casadocodigo.com.br/u/juliobarreto)\
**Post date:** [Abril 17, 2018, 9:41am UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001/1 "2018-04-17T09:41:50Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![evaldojuniorbento](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/evaldojuniorbento/32/2870_2.png) [@evaldojuniorbento](https://forum.casadocodigo.com.br/u/evaldojuniorbento)\
**Post date:** [Abril 19, 2018, 1:32pm UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001/2 "2018-04-19T13:32:31Z")

</div>

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

```auto
$bebidas = [];

array_push($bebidas, "agua"); 

```

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

```auto
$bebidas = [];

$bebidas[] = "agua"; 

```

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

---

<div class="post-metadata">

**Author:** ![juliobarreto](https://avatars.discourse-cdn.com/v4/letter/j/ba8739/32.png) [@juliobarreto](https://forum.casadocodigo.com.br/u/juliobarreto)\
**Post date:** [Abril 20, 2018, 9:15am UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001/3 "2018-04-20T09:15:01Z")

</div>

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’]`
```

---

<div class="post-metadata">

**Author:** ![evaldojuniorbento](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/evaldojuniorbento/32/2870_2.png) [@evaldojuniorbento](https://forum.casadocodigo.com.br/u/evaldojuniorbento)\
**Post date:** [Abril 21, 2018, 9:14am UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001/4 "2018-04-21T09:14:03Z")

</div>

Oi, @juliobarreto.

Neste caso estamos lidando com um array multidimensional.

```auto
$_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’.

---

<div class="post-metadata">

**Author:** ![juliobarreto](https://avatars.discourse-cdn.com/v4/letter/j/ba8739/32.png) [@juliobarreto](https://forum.casadocodigo.com.br/u/juliobarreto)\
**Post date:** [Abril 21, 2018, 12:47pm UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001/5 "2018-04-21T12:47:32Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![juliobarreto](https://avatars.discourse-cdn.com/v4/letter/j/ba8739/32.png) [@juliobarreto](https://forum.casadocodigo.com.br/u/juliobarreto)\
**Post date:** [Abril 21, 2018, 7:40pm UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001/6 "2018-04-21T19:40:13Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![evaldojuniorbento](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/evaldojuniorbento/32/2870_2.png) [@evaldojuniorbento](https://forum.casadocodigo.com.br/u/evaldojuniorbento)\
**Post date:** [Abril 22, 2018, 3:31pm UTC](https://forum.casadocodigo.com.br/t/erro-sintaxe-array-do-php/1001/7 "2018-04-22T15:31:30Z")

</div>

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).
