How to Remove Empty Values From a PHP Array?

Filtering out falsy values from a PHP array

The PHP array_filter() function can be used to remove all empty/falsy values from an array when the second argument to the function is not supplied. For example:

$arr = [null, 'foo', false, 0, 0.0, '', '0', [], 'bar'];
$filteredArr = array_filter($arr);

echo print_r($filteredArr, true); // [1 => 'foo', 8 => 'bar']

As you can see from the result, array keys are preserved (which results in gaps in an indexed array). If you wish to reindex the array, then you can use the array_values() function on the resulting array like so:

$arr = [null, 'foo', false, 0, 0.0, '', '0', [], 'bar'];
$filteredArr = array_filter($arr);
$reindexArr = array_values($filteredArr);

echo print_r($reindexArr, true); // [0 => 'foo', 1 => 'bar']

Alternatively, you may also use the splat operator (...) to unpack the array into a new array like so:

$arr = [null, 'foo', false, 0, 0.0, '', '0', [], 'bar'];
$filteredArr = array_filter($arr);
$reindexArr = [...$filteredArr];

echo print_r($reindexArr, true); // [0 => 'foo', 1 => 'bar']

Please note that using the splat operator (...) might not be performant with large arrays.


Hope you found this post useful. It was published . Please show your love and support by sharing this post.