НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗ppSpFnIFC 12 of 83 menu

Коллбэки во встроенных функциях в PHP

В PHP есть ряд встроенных функций, которые параметром принимают коллбэки. Общий принцип работы с ними мы изучим на примере функции array_map. Данная функция первым параметром принимает коллбэк, а вторым - массив. Функция применяет коллбэк к каждому элементу массива и возвращает измененный массив.

Давайте посмотрим на варианты использования этой функции с учетом полученных нами ранее знаний.

Вариант 1

Извлечем из каждого элемента массива квадратный корень с помощью встроенной функции sqrt. Для этого в качестве коллбэка параметром передадим строку с именем этой функции:

<?php $arr = [1, 2, 3, 4, 5]; $res = array_map('sqrt', $arr); var_dump($res); ?>

Вариант 2

Возведем каждый элемент массива в квадрат с помощью созданной нами обычной функции. Для этого в качестве коллбэка параметром передадим строку с именем этой функции:

<?php $arr = [1, 2, 3, 4, 5]; function func($num) { return $num ** 2; } $res = array_map('func', $arr); var_dump($res); ?>

Вариант 3

Переделаем нашу функцию на анонимную, записанную в переменную:

<?php $arr = [1, 2, 3, 4, 5]; $func = function ($num) { return $num ** 2; }; $res = array_map($func, $arr); var_dump($res); ?>

Вариант 4

Передадим анонимную функцию параметром:

<?php $arr = [1, 2, 3, 4, 5]; $res = array_map(function ($num) { return $num ** 2; }, $arr); var_dump($res); ?>

Вариант 5

Используем стрелочную функцию:

<?php $arr = [1, 2, 3, 4, 5]; $res = array_map(fn ($num) => $num ** 2, $arr); var_dump($res); ?>

Вариант 6

Пусть теперь степень, в которую нужно возвести число, задается внешней переменной коллбэка. Воспользуемся этой переменной, получив к ней доступ через use:

<?php $arr = [1, 2, 3, 4, 5]; $pow = 3; $res = array_map(function ($num) use ($pow) { return $num ** $pow; }, $arr); var_dump($res); ?>

Вариант 7

Перепишем предыдущий код через стрелочную функцию. Теперь переменная $pow будет доступна автоматически:

<?php $arr = [1, 2, 3, 4, 5]; $pow = 3; $res = array_map(fn ($num) => $num ** $pow, $arr); var_dump($res); ?>

Практические задачи

Дан массив со строками. Переведите текст каждого элемента массива в верхний регистр.

Дан массив со строками. Переверните текст каждого элемента массива так, чтобы символы шли в обратном порядке.

Русский
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить