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

Escopo da variável $usado

Galera, boa noite

Alguém pode me ajudar? Não entendi o escopo da variável $usado. Ela é declarada dentro de um if, e depois é utilizada em uma chamada de função (insereProduto()) dentro de outro if ?

Isso pode Arnaldo? Segue código...
<?php
      include("cabecalho.php");
      include("conecta.php");
      include("bancoProduto.php");

      $nome = $_POST['nome'];
      $preco = $_POST['preco'];
      $descricao = $_POST['descricao'];
      $categoria_id = $_POST['categoria_id'];

      if (array_key_exists('usado',$_POST)) {
        $usado = "true";
      } else {
        $usado = "false";
      }

      if (insereProdutos($conexao, $nome, $preco, $descricao, $categoria_id, $usado)) { ?>
      <p class="alert-success">Produto foi adicionado com sucesso!</p>
<?php } else { $msg = mysqli_error($conexao)?>
      <p class="alert-danger">Produto não foi adicionado: <?=$mgs?></p>
<?php } ?>


<?php include("rodape.php")?>
2 respostas
solução!

Olá Carlos.

O escopo do PHP é diferente de linguagens como Java, por exemplo. Em java, cada bloco (algo entre chaves {}) tem seu próprio escopo, sendo que se uma variável é definida num bloco, fora dele ela não mais existe.

No PHP, o escopo é por função, ou seja, se você criar uma variável dentro de um if, for, while etc. você pode usar ela fora do bloco dessas estruturas.

A regra é: - se você define uma variável fora de uma função, ela não é visível dentro da função (aí você normalmente passa como argumento da função, como você fez com $usado e insereProduto); - se você define uma variável dentro de uma função, ela não é visível fora da função (aí normalmente você usa return pra devolver algum valor da função).

Boa Vitor! Obrigado.