2016-06-16 2 views
1

У меня есть массив как это:Как удалить элементы массива, содержащие только пробелы?

$arr = array (0 => 'red', 
       1 => ' ', 
       2 => 'blue', 
       3 => '  ', 
       4 => 'green', 
       5 => ' ', 
       6 => 'white', 
       7 => ' ', 
       8 => 'black', 
       9 => '   '); 

Ну я пытаюсь удалить все элементы, которые только содержащие пробелы (ы). Так что это ожидаемый результат:

$arr = array (0 => 'red', 
       1 => 'blue', 
       2 => 'green', 
       3 => 'white', 
       4 => 'black'); 

Я могу сделать это, если этот пробел будет пустым. Поэтому я могу использовать $arr = array_filter($arr);. Но в этом случае, поскольку вместо пробелов есть пробелы, array_filter() не пригодится. Есть ли способ сделать это?

+1

http://stackoverflow.com/questions/3384058/how-do-you-strip-whitespace-from-an-array-using-php –

ответ

4

Вы можете просто пара его с помощью array_maptrim:

$arr = array_filter(array_map('trim', $arr)); 

Это не индексировать ключи, хотя, если вы хотите, вы могли бы просто использовать array_values:

$arr = array_values(array_filter(array_map('trim', $arr))); 
+0

Nice, спасибо .. upvote – stack

2

array_filter принимает обратный вызов функция. Ты можешь делать все, что захочешь.

array_filter($arr, function($v, $k) { 
    return trim($v) !== ''; 
}, ARRAY_FILTER_USE_BOTH); 

НТН

Смежные вопросы