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);
?>
Практикалық тапсырмалар
Жолдардан тұратын массив берілген. Массивтің әрбір элементінің мәтінін жоғарғы регистрге ауыстырыңыз.
Жолдардан тұратын массив берілген. Массивтің әрбір элементінің мәтінін теріс бағытта болатындай етіп аударыңыз, яғни таңбалар кері ретпен жіберілсін.