PHP – How to Remove Empty Array Elements

arraysphpstring

Some elements in my array are empty strings from users. $linksArray still has empty elements after the following:

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

The empty() function doesn't work either.

Best Answer

As you're dealing with an array of strings, you can simply use array_filter(), which conveniently handles all this for you:

$linksArray = array_filter($linksArray);

Keep in mind that if no callback is supplied, all entries of array equal to FALSE (see converting to boolean) will be removed. So if you need to preserve elements that are i.e. exact string '0', you will need a custom callback:

// PHP 7.4 and later
print_r(array_filter($linksArray, fn($value) => !is_null($value) && $value !== ''));

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

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

Note: If you need to reindex the array after removing the empty elements, use:

$linksArray = array_values(array_filter($linksArray));
Related Question