PHPda ichki funksiyalarda callbacklar
PHPda parametri sifatida callback qabul qiladigan bir qator ichki funksiyalar mavjud.
Ularni ishlatishning umumiy printsipini
array_map funksiyasi misolida o‘rganamiz.
Ushbu funksiya birinchi parametr sifatida
callback, ikkinchi parametr sifatida esa massiv qabul qiladi. Funksiya callbackni
massivning har bir elementiga qo‘llaydi
va o‘zgartirilgan massivni qaytaradi.
Keling, ushbu funksiyani oldingi bilimlarimiz asosida ishlatish variantlarini ko‘rib chiqaylik.
Variant 1
Massivning har bir elementidan
ichki funksiya
sqrt
yordamida kvadrat ildizni ajratib olamiz.
Buning uchun parametr sifatida callbackda
ushbu funksiya nomi yozilgan satrni uzatamiz:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Variant 2
Massivning har bir elementini biz yaratgan oddiy funksiya yordamida kvadratga ko‘taramiz. Buning uchun parametr sifatida callbackda ushbu funksiya nomi yozilgan satrni uzatamiz:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Variant 3
Keling, funksiyamizni anonim funksiyaga, o‘zgaruvchiga yozilgan holda o‘zgartiramiz:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Variant 4
Anonim funksiyani parametr sifatida uzatamiz:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Variant 5
Strelkali funksiyadan foydalanamiz:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Variant 6
Endi sonni ko‘tarish kerak bo‘lgan daraja
callbackning tashqi o‘zgaruvchisi orqali berilsin.
Ushbu o‘zgaruvchidan
use orqali unga kirish imkoniyatidan foydalanib foydalanamiz:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Variant 7
Oldingi kodni strelkali funksiya orqali qayta yozamiz.
Endi $pow o‘zgaruvchisi
avtomatik ravishda mavjud bo‘ladi:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Amaliy vazifalar
Satrlar bilan massiv berilgan. Massivning har bir elementidagi matnni katta harflarga o‘zgartiring.
Satrlar bilan massiv berilgan. Massivning har bir elementidagi matnni teskari tartibda yozing.