2013-04-02 4 views
1

для этого массива,удалить пробелы в массиве PHP

Array ( 
    [0] => 'HOST:' 
    [1] => 'killbill' 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 
    [7] => 
    [8] => 
    [9] => 
    [10] => 
    [11] => 'Loss%' 
    [12] => 
    [13] => 
    [14] => 'Snt' 
    [15] => 
    [16] => 
    [17] => 'Last' 
    [18] => 
    [19] => 
    [20] =>'id' 
) 

имеет пустой values.by, используя этот код дает

foreach($array as $key => $subarray) { 
    $array[$key] = preg_grep('/^$/', $subarray, PREG_GREP_INVERT); 
} 

array ( 
    [0] => HOST: 
    [1] => killbill 
    [11] => Loss% 
    [14] => Snt 
    [17] => Last 
    [20] =>id 
) 

, что означает, что он удаляет все пробелы. но он имеет исходные значения ключа (compair выше одного и ниже, а затем может получить четкое представление о том, что я говорю). Но я хочу, чтобы это было так.

array ( 
    [0] => 'HOST:' 
    [1] => 'killbill' 
    [2] => 'Loss%' 
    [3] => 'Snt' 
    [4] => 'Last' 
    [5] => 'id' 
) 

ключевые значения как 1,2,3,4 .... так как я могу это получить.

+4

array_filter() без обратного вызова будет удалить пустые элементы и удерживать ассоциативность; затем передайте это значение array_values ​​(), чтобы сбросить ключи от 0 –

+0

'array_filter()' - хороший план, но обратите внимание, что вам все равно потребуется обратный вызов (в зависимости от вашего определения «пустой»), потому что без него он удалит любое значение false, в частности, оно удалит '' 0'', который вы, вероятно, захотите сохранить, поскольку похоже, что вы работаете с результатами ping. – DaveRandom

+0

Это вопрос, с которым мне приходится сталкиваться с ответом @Felix Kling. ответил 21 апр '11 в 22: 38- [link] http://stackoverflow.com/questions/5750407/php-array-removing-empty-values#comment6582284_5750521 [/ link] –

ответ

3

просто использовать это вместо Foreach

array_values(array_filter($array)); 

что удалит пространство и реорганизовать свой массив.

взгляд: http://codepad.org/howl3Opj

+0

спасибо charlie..that помогает мне много –

+0

в любое время ...: D, счастливое кодирование! – egig

0

попробовать эту функцию, это поможет вам разобраться в проблеме

$arr = array_map('array_values', $arr); 
1

Просто используйте array_filter().

$array = array_filter($array); 

Это удалит все пустые значения - то есть пустой, null, false, ноль.

Если вы хотите удалить только пустые строки и сохранить другие пустые значения (например, ноль), вы можете указать второй параметр для array_filter(), который позволяет вам определить функцию, чтобы указать, какие элементы следует фильтровать.

$array = array_filter($array, function($val) {return $val!=='';}); 

Надеюсь, что это поможет.

+0

thanks spudley :) –

+0

@Spudley, что часть кода не работает $ array = array_filter ($ array, function ($ val) {return $ val! == '';}); , давая ошибку Parse error: синтаксическая ошибка, неожиданная T_FUNCTION –

+0

@vikastyagi - в какой версии PHP вы используете? Для этого кода требуется PHP v5.3 или выше. Вы указали ошибку, которую вы пытаетесь запустить в PHP 5.2. – Spudley

0

Использование функции array_diff

<?php 

    $array_space = array(0,3,4,45,12,"",54,23); 

    $remove = array(""); 

    print_r(array_diff($array_space,$remove)); 

?> 

See Output here

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