Коллбэкҳо дар функсияҳои дарунсохти 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);
?>
Масъалаҳои амалӣ
Массив бо сатрҳо дода шудааст. Матни ҳар як элементи массивро ба регистри болоӣ тарҷума кунед.
Массив бо сатрҳо дода шудааст. Матни ҳар як элементи массивро баргардонед, то аломатҳо дар самти баръакс гузаранд.