undefine-index-em-php

Undefined index error em php

Undefined index error é uma mensagem de erro emitida pelo interpretador PHP quando tentamos acessar o valor de um array, num índice inexistente. Essa é uma mensagem de erro muito comum para programadores PHP iniciantes, mas que também possui uma solução igualmente simples.

No artigo de hoje, não pretendo dar uma solução, mas mostrar as possíveis formas de solução e indicar as que acredito serem as melhores para o problema em questão. Assim, você ficará livre para usar a que for mais interessante para você.

Simulando o undefined index error em php?

Como exemplo prático, vou simular uma possível causa do undefined index error para que possamos entender melhor as formas de solução. O código abaixo provoca o erro:

Apesar de ter utilizado um array no exemplo acima, isso pode acontecer em várias situações diferentes. Contudo, as situações mais comuns são:

Uso indevido das variáveis $_POST, $_GET, $_FILE e $_REQUEST: Para aqueles que ainda não sabem, estas variáveis são arrays, e por causa disso, sujeitas à ao acesso de uma chave inexistente. Por isso, sempre se certifique de que os dados esperados por um formulário, ou URI, estão realmente sendo enviados.

Uso incorreto do SQL: Quando rodamos uma consulta no banco de dados, em vias mais comuns, a linguagem php retornar esses dados no formato de um array padrão, onde as chaves são números, ou no formato de array associativo, onde as chaves do array são nomes.

Undefined index error não acontecia antes…

Apesar de não ser muito comum, isso é possível devido às configurações do PHP ini ou em algum arquivo de configuração de código usando a função error_reporting. Muitos desenvolvedores retiram as notificações (NOTICE) das mensagens de erro relatadas pelo PHP. Se você quiser fazer o teste, pode ativar todas as mensagens de erros do PHP com o comando abaixo:

Para desativar as notificações, basta usar o comando abaixo:

Você também pode alterar as configurações do PHP.ini, procurando a diretiva error_reporting e usando o comando abaixo para ativar todas as mensagens de erro.

E para remover as notificações no PHP.ini, basta trocar o comando acima para:

Apenas lembre que, para que o error_reporting funcione no PHP.ini, você precisar alterar a diretiva display_errors para On. Como mostrado abaixo.

As soluções para undefined index error em php

Antes de mais nada, é uma boa pratica usar as funções print_r ou var_dump para verificar seu array sempre que você encontrar um undefined index error. Essas duas rotinas mostram o conteúdo do array, e com elas você pode verificar se o índice usado realmente existe.

Usando isset como solução para undefined index error

Caso o índice do array nem sempre apareça como esperado, você pode verificar a existência dele usando função do php isset. A utilidade dela vai além de verificar a existência se um índice no array. Ela verifica se uma variável foi atribuída com algum valor ou não. Para o nosso caso ela vai funcionar perfeitamente.

Para usar isset basta passar o array com a chave desejada como no código abaixo:

Ou de forma mais simplificada, você pode usar o operador ternário da linguagem PHP para simplificar o código.

Essa solução funciona da mesma forma tanto para arrays comuns como para as variáveis $_POST, $_GET, $_FILE e $_REQUEST.

Melhorando a solução com isset

Como alternativa útil, desenvolvi uma função em php que verifica a existência de um índice num array qualquer e retorna um valor. Caso o índice exista a rotina devolve o valor do índice no array, e caso o índice não exista, a função devolve uma string vazia.

Você pode utilizar essa função passando o nome ou índice da chave no primeiro parâmetro, e no segundo passando o array. Como uma string vazia é entendida como false em PHP, você pode realizar os testes em if de forma resumida. Observe abaixo os exemplos de como usar a função:

Você pode fazer a mesma coisa com outras variáveis como $_POST, $_GET, $_REQUEST e $_FILE, ou qualquer array em PHP.

Conclusão

Bem… este artigo tem bastante conteúdo para se pensar em como solucionar o undefined index error em PHP. Esse problema não tem nada de complicado quando entendemos sua origem e possíveis formas de solução.

Caso tenha ficado alguma dúvida sobre o assunto, ou você tenha algo à acrescentar e contribuir, não deixe de comentar. Ok?

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">