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);
?>
Практикалык тапшырмалар
Саттардан турган массив берилген. Массивдин ар бир элементинин текстин баш регистрине өзгөртүңүз.
Саттардан турган массив берилген. Массивдин ар бир элементинин текстин артка карата жазылгандай кылып, белгилер тескери тартипте жазылсын.