This question already has an answer here:
I have an array like this:
$arr = array (0 => 'red',
1 => ' ',
2 => 'blue',
3 => ' ',
4 => 'green',
5 => ' ',
6 => 'white',
7 => ' ',
8 => 'black',
9 => ' ' );
Well I'm trying to remove all items which are just containing white space(s). So this it expected result:
$arr = array (0 => 'red',
1 => 'blue',
2 => 'green',
3 => 'white',
4 => 'black');
I can do that if those white spaces item be empty. So I can use $arr = array_filter($arr);
. But in this case, because there is white spaces instead of nothing, array_filter()
isn't useful. Is there any approach to do that?
</div>
You could just couple it with array_map
using trim
:
$arr = array_filter(array_map('trim', $arr));
This doesn't reindex the keys though, if you want you could just use array_values
:
$arr = array_values(array_filter(array_map('trim', $arr)));
array_filter takes a callback function. You can do whatever you want.
array_filter($arr, function($v, $k) {
return trim($v) !== '';
}, ARRAY_FILTER_USE_BOTH);
hth