aprender PHP logo

Assim como ontem (com a dica sobre trim em todos os valores de um array), hoje vou deixar outra dica bem rápida, porém extremamente útil: "Como eliminar valores nulos de array em php".

Na verdade não é nada complicado, você pode atingir este objetivo com apenas uma linha de código, ou seja:

// Remove os valores nulos
$array = array_filter($array);

Veja um exemplo:

<?php
// Um array simples com alguns valores nulos
$array = array(
    '',
    'teste',
    '',
    'outro teste',
	'',
	'',
	'',
	'Mais um valor',
);

// Mostra os dados
print_r( $array );

/*
Array
(
    [0] => 
    [1] => teste
    [2] => 
    [3] => outro teste
    [4] => 
    [5] => 
    [6] => 
    [7] => Mais um valor
)
*/

// Remove os valores nulos
$array = array_filter($array);

// Recria as chaves do array
$array = array_values($array);

// Mostra os dados
print_r( $array );

/*
Array
(
    [0] => teste
    [1] => outro teste
    [2] => Mais um valor
)
*/
?>

A função {php}array_filter{/php} (ver manual) filtra os elementos de um array utilizando uma função de callback. Se você não enviar a função e chamar {php}array_filter{/php} apenas com o seu array, todos os valores serão convertidos para boolean e avaliados. Valores avaliados como {php}false{/php} serão removidos.

Um problema que pode ocorrer, é que as chaves do seu array não serão recriadas automaticamente, os valores manterão suas chaves originais. Se você quiser recriar as chaves numéricas, basta utilizar {php}array_values{/php} (ver manual):

/** Recria as chaves do array */
$array = array_values($array);

Simples assim!

Espero que seja de utilidade.