Что делает функция array_filter()?
Функция array_filter() принимает массив и, при необходимости, функцию обратного вызова (callback), которая определяет, какие элементы массива должны остаться, а какие — удалены. Результатом работы функции является новый массив, содержащий только те элементы, которые прошли фильтрацию.
Синтаксис функции:
array_filter(array, callable_function, flags)array: исходный массив, который нужно отфильтровать.callable_function(необязательный): функция обратного вызова, которая принимает элемент массива и возвращает true, если элемент должен остаться, и false, если элемент должен быть удалён.flags(необязательный): флаги, управляющие обработкой ключей массива.
Примеры использования функции array_filter()
1. Простая фильтрация массива чисел
Оставляем только нечётные числа:
$numbers = [1, 2, 3, 4, 5];
$oddNumbers = array_filter($numbers, fn($num) => $num % 2 !== 0);
print_r($oddNumbers);Результат:
Array
(
[0] =>1
[2] =>3
[4] => 5
)2. Фильтрация ассоциативного массива
Оставляем только элементы с ненулевыми значениями:
$data = ["apple" => 1, "banana" => 0, "cherry" => 3];
$filteredData = array_filter($data);
print_r($filteredData);Результат:
Array
(
[apple] => 1
[cherry] => 3
)3. Фильтрация с сохранением ключей
Оставляем только элементы с ключами, начинающимися на "a":
$data = ["apple" => 1, "banana" => 2, "avocado" => 3];
$filteredData = array_filter($data, fn($k) => strpos($k, 'a') === 0, ARRAY_FILTER_USE_KEY);
print_r($filteredData);Результат:
Array
(
[apple] => 1
[avocado] => 3
)Практическое применение функции array_filter()
Функция array_filter() широко используется в следующих сценариях:
- Очистка массивов: удаление пустых или нулевых элементов.
- Фильтрация данных: выборка нужных элементов из больших массивов.
- Парсинг CSV/XML/JSON: очистка данных перед дальнейшей обработкой.
Советы по использованию функции array_filter()
- Используйте анонимные функции: для удобства написания фильтров используйте лямбда-функции (arrow functions).
- Укажите флаги: используйте флаг
ARRAY_FILTER_USE_KEY, если хотите фильтровать по ключам массива. - Проверяйте тип данных: убедитесь, что элементы массива имеют нужный тип перед применением фильтра.
Функция array_filter() — это мощный инструмент для фильтрации элементов массива в PHP. Она позволяет легко и эффективно очищать массивы от ненужных элементов, что делает её незаменимой в задачах обработки данных и чистки массивов.