2010-09-03 22 views
10

Estoy intentando eliminar elementos vacíos en una matriz con la función array_filter.Eliminar elementos de matriz vacíos con array_filter con una función de devolución de llamada

Cuando yo uso una devolución de llamada externa como esto:

function callback($a) { return !empty($a);} 
$arr = array("abc",'','ghi'); 
$res = array_filter($arr, "callback"); 

funciona como se esperaba.

Pero si uso array_filter así:

$arr = array("abc",'','ghi'); 
$res = array_filter($arr, function($a) { return !empty($a);}); 

Se produce el error:

PHP Parse error: syntax error, unexpected T_FUNCTION in test.php on line 2 

¿Qué estoy haciendo mal?

+0

@moderator: Acabo de votar en esta pregunta y http://stackoverflow.com/q/4043741/372239 en el mismo segundo. Supongo que un downvoter en serie está operando – Toto

Respuesta

15

Parece que está utilizando una versión de PHP que no admite anonymous functions (disponible desde PHP 5.3.0).

Pero array_filter tiene ya filtrar valores vacíos si no se especifica una función de devolución de llamada:

Si hay callback se suministra, todas las entradas de input igual a FALSO (ver converting to boolean) será eliminado.

+0

Gracias, funciona bien sin devolución de llamada. – Toto

+0

Solo una nota que sin una devolución de llamada y entrada como $ arr = array ("abc", '', 'ghi', ''); el último elemento no será filtrado ya que array_filter no recortará la entrada. –

0

Funciona bien con PHP5. Verifique su versión de PHP y actualícela si es necesario.

+1

Tengo php 5.1.6 y no puedo actualizar :-( – Toto

Cuestiones relacionadas