БлогNot. Фильтрация массива в PHP

Фильтрация массива в PHP

Часто бывает нужно извлечь из массива чётные по значению, положительные или ещё какие-то элементы и сформировать из них новый массив. Иметь для каждого такого конкретного случая отдельную стандартную функцию было бы странно даже для PHP, раз есть достаточно универсальная стандартная функция array_filter.

Извлечём с её помощью чётные (по значению) элементы массива:

<?php
 $array = array (1,2,3,4,5);
 $filteredarray = array_filter ($array, function ($item) { return !($item%2); });
 print_r ($filteredarray);
?>
Обратите внимание на второй параметр вызова array_filter - это безымянная функция, параметр которой обозначен $item, она автоматически вызовется для каждого из элементов исходного массива $array. Выражение !($item%2), возвращаемое функцией, - то же самое, что $item%2==0, то есть, проверка того, что остаток от деления $item на 2 равен нулю, $item является чётным значением. Такие элементы, для которых callback-функция даёт результат, не равный нулю (false), помещаются в выходной массив $filteredarray.

Встраивать безымянную функцию внутрь вызова метода array_filter необязательно, можно было и так:

<?php
 function filter ($item) { return !($item&1); }
 $array = array (1,2,3,4,5);
 $filteredarray = array_filter ($array, 'filter');
 print_r ($filteredarray);
?>

- здесь, кроме того, проверка чётности сделана побитовым "и" с единицей, что должно быть быстрее, чем остатком от деления :)

Надо учитывать, что встроенная (callback) функция не должна менять элементы массива, иначе поведение фильтра станет непредсказуемым.

15.04.2013, 11:44 [11747 просмотров]


теги: php числа

К этой статье пока нет комментариев, Ваш будет первым