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

Функции-коллбэки в PHP

Коллбэком называется функция, которая передается параметром в другую функцию.

Давайте посмотрим на примере. Пусть у нас есть функция, которая первым параметром принимает число, а вторым параметром - коллбэк:

<?php function func($num, $calb) { } ?>

Сделаем так, чтобы внутри функции наш коллбэк был вызван для переданного числа:

<?php function func($num, $calb) { echo $calb($num); } ?>

Давайте теперь посмотрим, какие есть варианты передачи коллбэка в нашу функцию.

Вариант 1

Наш коллбэк может быть обычной функцией:

<?php function calb($num) { return $num ** 2; } ?>

В этом случае в качестве коллбэка мы передадим имя нашей функции:

<?php func(3, 'calb'); ?>

Внутри функции func наш коллбэк будет вызван по имени.

Вариант 2

Наш коллбэк может быть анонимной функцией, записанной в переменную:

<?php $calb = function($num) { return $num ** 2; }; ?>

В этом случае мы параметром передаем переменную с нашей функцией:

<?php func(3, $calb); ?>

Вариант 3

Можно передать анонимную функцию сразу параметром:

<?php func(3, function($num) { return $num ** 2; }); ?>

Вариант 4

Можно сократить код, используя стрелочную функцию:

<?php func(3, fn($num) => $num ** 2); ?>

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

Дана функция, параметром принимающая массив и коллбэк, который применится к каждому элементу массива:

<?php function func($arr, $calb) { $res = []; foreach ($arr as $elem) { $res[] = $calb($elem); } return $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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить