Eliminar los elementos vacíos de la matriz

Algunos elementos de mi matriz son cadenas vacías basadas en lo que el usuario ha enviado. Necesito eliminar esos elementos. Tengo esto:

foreach($linksArray as $link)
{
    if($link == '')
    {
        unset($link);
    }
}
print_r($linksArray);

Pero no funciona. $linksArray sigue teniendo elementos vacíos. También he intentado hacerlo con la función empty(), pero el resultado es el mismo.

Solución

Como se trata de una matriz de cadenas, puede utilizar simplemente array_filter(), que se encarga de todo esto convenientemente:

print_r(array_filter($linksArray));

Tenga en cuenta que si no se suministra una devolución de llamada, todas las entradas del array iguales a FALSE (ver conversión a booleano) serán eliminadas. Por lo tanto, si necesita conservar los elementos que son, por ejemplo, la cadena exacta '0, necesitará una devolución de llamada personalizada:

// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));

// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return !is_null($value) && $value !== ''; }));
Comentarios (13)
$linksArray = array_filter($linksArray);

"Si no se suministra una devolución de llamada, se eliminarán todas las entradas de entrada iguales a FALSE". -- http://php.net/manual/en/function.array-filter.php

Comentarios (3)
foreach($linksArray as $key => $link) 
{ 
    if($link === '') 
    { 
        unset($linksArray[$key]); 
    } 
} 
print_r($linksArray); 
Comentarios (3)