Notice: Undefined Variable Ou Undefined Index
Para entender esse tipo de mensagem, observe o exemplo abaixo:
$x = $y + 10;
?>
Executando esse script, que valor deve conter a variável $x?
Você deve responder, impossível dizer, não sei qual é o valor da variável $y. Para o PHP a resposta é a mesma, para ele está sendo feito a seguinte operação internamente:
$x = valor indefinido + 10;
?>
A maneira correta e fazer a seguinte operação:
$y = 5;
$x = $y + 10;
?>
ou
$y = 0;
$x = $y + 10;
?>
Toda vez que é feita uma operação com uma variável "valor indefinido" o PHP exibe a mensagem Notice: Undefined variable.
Muitas vezes os nossos problemas de programação são mais complexos, pois estamos trabalhando com variáveis passadas por SESSION, GET, POST e outros métodos, para trabalhar dessa forma e necessário avaliar a condição da variável, por exemplo:
if(!isset($y))
$y = 0;
?>
Esse script verifica se a variável existe, se a variável não existir é atribuído zero.
Pode ocorrer o mesmo erro quanto estamos trabalhando com arrays e tentamos acessar uma posição que não existe, por exemplo:
$info_funcionario = array("nome" => "Patrick Espake", "profissao" => "Programador");
echo $info_funcionario["email"];
?>
No script acima estou tentando acessar o índice "email" no array, esse índice não existe e o PHP exibe a mensagem Notice: Undefined index email.
Você pode fazer a seguinte afirmação: "Já programei assim em PHP e nunca apareceu esse erro!".
O que acontece é que essas notificações de erros podem ser configuradas no PHP.INI, muitos programadores em ambiente de desenvolvimento deixam configurado para exibir todos os erros e em ambiente de produção deixam configurado para não exibir os erros de notificação.
Para configurar o PHP.INI para mostrar todos os erros, você deve deixar a cláusula error_reporting da seguinte forma:
error_reporting = E_ALL
Para configurar o PHP.INI para não exibir as mensagens de notificação você deve deixar da seguinte forma:
error_reporting = E_ALL & ~E_NOTICE
Em outras linguagens de programação uma variável não inicializada pode conter qualquer coisa, no PHP é considerado como nulo ou como 0 em uma operação aritmética.
Além disso, é mais rápido escrever:
echo $_GET['id'];
?>
do que
if isset($_GET['id'])) echo $_GET['id'];
?>
Em casos extremos você pode usar o @ para ocultar as mensagens de notificação.
echo @$_GET['id'];
?>
Eu considero esse método muito rigoroso, então é melhor fazer o que você acha melhor. Essas notificações podem ajudar durante o desenvolvimento, para detectar determinados erros.
Referência:
http://frederic.bouchery.free.fr/?2004/10/12/22-Notice-Undefined-Variable-Ou-Index
Patrick Espake
E-mail: [email protected]
Blog: www.patrickespake.com
Autor: Patrick Espake
Artigos Relacionados
Introduzindo A Programação Em C++
Variável Dummy?
Usando Colunas Na Formatação Dos E-mails.
Introdução Ao Cobol
5 Passos Para A Limpeza De Seu Lista De E-mails
Lista De E-mails,bouncing E-mails
Introduzindo A Programação Em C++ Parte Ii