Diogo Besson :: tecnologia

PHP e o empty();

PHP e o empty();

PHP e o empty(); fala sobre um problema chatíssimo de verificar se algo está vazio, é nulo ou igual a nada. Você deve ter passado por isso, não?

Terminando um sisteminha de divulgação de pagamentos da empresa, encontrei um problema comum, que frequentemente apareceu em grande parte dos programas que produzi ao longo desses anos.

Como ter certeza de que uma variável tem uma atribuição “vazia” ou não?

Neste caso, o sistema pegava uma planilha do MS Excel, fazia um parse nela (analisava cada célula dela) e preenchia um array com os valores encontrados.

Acontece que o Excel às vezes retornava valores “em branco”, pois a linha continha valores que foram anteriormente apagados da célula.

Como o próximo passo do sistema era explodir esse array e gravar os valores no banco de dados, algumas linhas eram criadas com todos os campos vazios. Um lixo.

Na hora de mostrar para o usuário o resultado em uma pesquisa simples, o sistema pegava as linhas em branco e jogava na tela, tornando a apresentação feia e sem sentido.

A solução foi evitar que o array fosse populado com valores em branco ou evitar que a dimensão com valores em branco fosse inserida no banco de dados. Para isso, usei a função empty(); do PHP.

Deu bão!

A função empty(mixed $var) retorna um boolean (true | false) caso $var tenha atribuição vazia ou não.

Algumas observações:

empty() aceita somente a passagem de variáveis como parâmetros. Qualquer outra coisa – expressões, por exemplo – vão retornar um parse error.

não tente fazer ternários dentro de empty, por favor.

um bom exemplo do que não se deve fazer, está incluído na documentação dessa função:

if (empty(trim($name))) { /* impl aqui */ } else { /* outra impl aqui */ }

Casos de Vazio Louco

Há também na documentação uma lista de valores que são considerados empty() -> true:

  • “” (Uma string vazia ou um grande nada, vazio louco)
  • 0 (número zero, como inteiro, double,  float, etc…)
  • “0” (string numérica de zero)
  • NULL (valor nulo é considerado vazio)
  • FALSE (valor booleano false é considerado vazio)
  • array() (um array com NADA dentro. Array vazio)
  • var $var; (dentro de uma classe, uma variável declarada, mas não inicializada)

Voltando pro estudo de caso

dentro do meu método inserirRegistros($array_com_registros), eu fiz um if antes de popular o banco da seguinte maneira:

if(!empty($valor)) {

mysql_query(“INSERT bla bla bla…”);

}

ou seja, ele só executaria a query no banco caso o valor atribuído a variavel $valor não fosse vazio.

Bem básico e de grande utilidade.

um abraço ao visitante,

Diogo Besson.

Leave a Comment

O seu endereço de e-mail não será publicado.