rss
twitter
  •  

Удаление пустых элементов из массива в php

В английской раскладке: elfktybt gecns[ 'ktvtynjd bp vfccbdf d php
В русской раскладке: удаление пустых элементов из массива в зрз
| Рубрика Программирование |
2 641 | Оцените статью
(Нет оценок)
Loading ... Loading ...

1

Есть несколько разных способов удаления пустых элементов массива.

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

Начнем с самого простого и очевидного способа, копируем все непустые элементы в другой массив.

1
2
3
4
5
6
7
8
9
function RemoveEmpty1($array)
{
    $Result = array();
    foreach ($array as $key => $value) {
        if ($value != '')
            $Result[] = $value;
    }
    return $Result;
}

Так как по моим замерам этот способ оказался самым быстрым отсчет скорости буду вести от него.

Второй способ. Удаляет элементы из массива в момент прохода по нему.

1
2
3
4
5
6
7
8
function RemoveEmpty2($array)
{
    foreach ($array as $key => $value) {
        if ($value == '')
            unset($array[$key]);
    }
    return $array;
}

Этот алгоритм работает в 1,12 раза медленнее предыдущего.

Третий способ. Оставляет элементы удовлетворяющие условию функции RemoveFilter, непустые элементы.

1
2
3
4
5
6
7
8
function RemoveEmpty3($array)
{
    function RemoveFilter($value)
    {
        return !empty($value);
    }
    return array_filter($array, "RemoveFilter");
}

Тут мы имеем скорость работы в 2 раза медленнее чем в первом способе.

Следующая функция основана на исключении элементов одного массива из другого.

1
2
3
4
function RemoveEmpty4($array)
{
    return array_diff($array, array(''));
}

А это самый долгий способ он работает в 11 раз медленнее первого способа.

Рассмотрим работу функций на примере.

1
2
3
4
5
Array ( [0] => [1] => [2] => 24951 [3] => [4] => [5] => 29156 [6] => [7] => [8] => 9805 [9] => )   // Исходный массив
Array ( [0] => 24951 [1] => 29156 [2] => 9805 ) // После выполнения функции RemoveEmpty1
Array ( [2] => 24951 [5] => 29156 [8] => 9805 ) // После выполнения функции RemoveEmpty2
Array ( [2] => 24951 [5] => 29156 [8] => 9805 ) // После выполнения функции RemoveEmpty3
Array ( [2] => 24951 [5] => 29156 [8] => 9805 ) // После выполнения функции RemoveEmpty4

Как видите, первый способ в отличие от остальных не сохраняет ключи элементов, рассмотрим еще один пример.

1
2
3
4
5
Array ( [Фрукт] => Апельсин [Овощь] => Баклажан [Одежда] => [Прическа] => [Птица] => Курица )
Array ( [0] => Апельсин [1] => Баклажан [2] => Курица )
Array ( [Фрукт] => Апельсин [Овощь] => Баклажан [Птица] => Курица )
Array ( [Фрукт] => Апельсин [Овощь] => Баклажан [Птица] => Курица )
Array ( [Фрукт] => Апельсин [Овощь] => Баклажан [Птица] => Курица )

Для ассоциативных массивов первый способ не подходит.

Присылайте свои способы, а также замеры скорости работы кода.

Это интересно...

Метки: , , ,

Если нужен мерседес - Подпишись на RSS!

Комментарии (1)

Спасибо!

Комментирование продлевает жизнь!