![]() |
Методы array_filter(), array_map() и array_reduce() в PHP с примерамиДля более удобной работы с массивами в языке PHP есть немало функций. Они делают быстрее и в одну строку то, для чего бы пришлось писать иногда множество строк – то есть фактически реализуют за программиста часто употребляемые шаблоны (паттерны, образцы, порядок действий) программирования. Давайте сегодня рассмотрим три таких метода: array_filter(), array_map() и array_reduce(). Метод array_filter() Как можно догадаться по названию, этот метод фильтрует массив элементов, применяя callback-функцию. Вот, например, нам надо в имеющемся массиве целых чисел оставить только те, которые больше девятки. С помощью array_filter() это можно сделать так: function moreThanNine($var) { if ($var > 9){ return $var; } } $upArr = array(2, 6, 11, 44); print_r(array_filter($upArr, "moreThanNine"));Получается так: ![]() Обратите внимание, что ключи массива сохраняются. Добавлять или удалять с помощью колбека элемент лучше не надо – результат будет непредсказуем. С версии 5.6 добавилась пара констант, которые можно использовать третьим параметром - ARRAY_FILTER_USE_KEY и ARRAY_FILTER_USE_BOTH – по названию думаю вы тоже все понимаете. Метод array_map() Очень похожая функция, но в результате после прохода каждого элемента возвращает массив (или массивы) с таким же числом элементов. Обработанных колбэк фунцией. Функция array_map позволяет применять функцию обратного вызова для преобразования элементов массива. Это действительно полезно, когда вы хотите выполнить определенную операцию над каждым элементом массива. Кроме того, он также позволяет объединять несколько массивов в один многомерный массив. Вместо того, чтобы перебирать все элементы массива с помощью конструкции foreach для выполнения определенной операции над ними, вам следует предпочесть функцию array_map, которая создана специально для этого. Например, с помощь. Этого метода можно все элементы массивы перевести в нижний регистр, а первый символ в верхний: function myTemplateStr($el) { return ucfirst(strtolower($el)); } $upArr = ['whY', 'ME', 'lemon']; $results = array_map('myTemplateStr', $upArr); print_r($results); ![]() В синтаксисе функции array_map вы можете передать значение null в качестве первого аргумента вместо вызываемого. $names = ['job', 'personal']; $emails = ['admin@upread.ru', 'up777up@yandex.ru']; $results = array_map(null, $names, $emails); print_r($results); ![]() Поскольку мы передали значение null в первом аргументе, он выполняет операцию объединения для всех массивов, которые передаются со второго аргумента и далее. В нашем случае мы передали два массива, и функция array_map объединяет их в один многомерный массив. Функция array_reduce() PHP Эта встроенная функция PHP применяется для сведения элементов массива к одному значению, которое может быть значением с плавающей точкой, целым числом или строкой. Функция использует определяемую пользователем функцию обратного вызова для уменьшения входного массива. Синтаксис: array_reduce($array, own_function, $initial)Функция принимает три аргумента:
function own_function($element1, $element2) { return $element1 . ", " . $element2; } $array = array(45, 22, 456, 879); print_r(array_reduce($array, "own_function", 333));В итоге мы получим: 333, 45, 22, 456, 879 ![]() Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда. ![]() |
Мои услуги
|
© upread.ru 2013-2022 При перепечатке активная ссылка на сайт обязательна. |