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

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

Фильтрация массива в 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) функция не должна менять элементы массива, иначе поведение фильтра станет непредсказуемым.


теги: php числа

Здесь можно оставить коментарий, обязательны к заполнению только красные поля. Не пишите лишнего, и всё будет хорошо :)

Ваше имя:
Пароль (если желаете зарегистрировать имя):
Любимый URL (если указываете, то вставьте полностью):
Текст сообщения (до 1024 символов):
 
Введите 2-й код из этих чисел:
70759, 27821, 42609, 58892
 

15.04.2013, 11:44; рейтинг: 8854

  свежие записипоиск по блогукомментироватьстатистика

Наверх Яндекс.Метрика
© PerS
вход