Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

php e array

Olá, No código:

<?php session_start(); ?>
<html>
    <head>
        <title>Gerenciador de Tarefas</title>
    </head>

    <body>
        <h1>Gerenciador de Tarefas</h1>

        <form action="">
            <fieldset>
                <legend>Nova Tarefa</legend>
                <label for="">Tarefa:</label>
                <input type="text" name="nome">
                <input type="submit" value="Cadastrar ">
            </fieldset>
        </form>

        <?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'];
            }
        ?>

    <table>
        <tr>
            <th>Tarefas</th>    
        </tr>

        <?php foreach ($lista_tarefas as $tarefa): ?>
            <tr>
                <td><?php echo $tarefa; ?></td>
            </tr>
        <?php endforeach; ?>
    </table>
    </body>
</html>

Por qual motivo se faz

 $_SESSION['lista_tarefas'][]

e não apenas

$_SESSION['lista_tarefas']

e pq aparece o seguinte erro:

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\tarefas\tarefas.php on line 36

e tambem

 Uncaught Error: [] operator not supported for strings in C:\xampp\htdocs\tarefas\tarefas.php:22
3 respostas

$SESSION['listatarefas'][] esta é a sintasse para usar uma array em php. poderia ser $minha_array[] = 1; No primeiro erro ele informa que a variável que voce esta tentando usar não é um array e reporta um erro. Na segunda mensagem o compilador informa que você esta tentando usar uma string como se fosse um array. É um problema de inicialização desta variaveis

Mas no livro PHP e MSql da casa do codigo está exatamente assim

        <?php

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

            var_dump($_SESSION['lista_tarefas']);


            $lista_tarefas = [];

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

e sempre que faço isso aparece o mesmo erro:

Fatal error: Uncaught Error: [] operator not supported for strings in C:\xampp\htdocs\tarefas\tarefas02.php:23 Stack trace: #0 {main} thrown in C:\xampp\htdocs\tarefas\tarefas02.php on line 23
solução!

Ja resolvi. Limpei o cache do navegador. A $SESSSION['listatarefas'] estava sendo setada como uma string.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software