Удалить пустые элементы массива - PullRequest
713 голосов
/ 07 сентября 2010

Некоторые элементы в моем массиве являются пустыми строками, основанными на том, что отправил пользователь. Мне нужно удалить эти элементы. У меня есть это:

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

Но это не работает. $linksArray все еще имеет пустые элементы. Я также пытался сделать это с помощью функции empty(), но результат тот же.

Ответы [ 25 ]

11 голосов
/ 07 января 2015

Если вы работаете с числовым массивом и вам необходимо переиндексировать массив после удаления пустых элементов, используйте функцию array_values ​​:

array_values(array_filter($array));

См. Также: Массив PHP для переиндексации?

9 голосов
/ 06 ноября 2012

Я должен был сделать это, чтобы сохранить значение массива (строка) 0

$url = array_filter($data, function ($value) {
  return (!empty($value) || $value === 0 || $value==='0');
});
8 голосов
/ 17 октября 2012
function trim_array($Array)
{
    foreach ($Array as $value) {
        if(trim($value) === '') {
            $index = array_search($value, $Array);
            unset($Array[$index]);
        }
    }
    return $Array;
}
8 голосов
/ 23 октября 2013
$a = array(1, '', '', '', 2, '', 3, 4);
$b = array_values(array_filter($a));

print_r($b)
8 голосов
/ 29 апреля 2014

Для многомерного массива

$data = array_map('array_filter', $data);
$data = array_filter($data);
8 голосов
/ 11 марта 2014
$out_array = array_filter($input_array, function($item) 
{ 
    return !empty($item['key_of_array_to_check_whether_it_is_empty']); 
}
);
7 голосов
/ 10 ноября 2012

Я использую следующий скрипт для удаления пустых элементов из массива

for ($i=0; $i<$count($Array); $i++)
  {
    if (empty($Array[$i])) unset($Array[$i]);
  }
6 голосов
/ 23 ноября 2014

Просто хочу добавить альтернативу циклам ... также устранять пробелы в ключах ...

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

Я искал что-то более похожее на это: http://gotofritz.net/blog/howto/removing-empty-array-elements-php/

Комбинация array_filter и array_slice делает свое дело.

$example = array_filter($example); $example = array_slice($example,0);

Нет представления об эффективности или тестах, но это работает.

5 голосов
/ 02 февраля 2013
foreach($arr as $key => $val){
   if (empty($val)) unset($arr[$key];
}
5 голосов
/ 11 марта 2014
$my = ("0"=>" ","1"=>"5","2"=>"6","3"=>" ");   

foreach ($my as $key => $value) {
    if (is_null($value)) unset($my[$key]);
}

foreach ($my as $key => $value) {
    echo   $key . ':' . $value . '<br>';
} 

выход

1: 5

2: 6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...