PHP-də daxili funksiyalarda callback-lər
PHP-də parametr kimi callback qəbul edən bir sıra daxili funksiyalar var.
Onlarla işləmənin ümumi prinsipini
array_map funksiyasının nümunəsində öyrənəcəyik.
Bu funksiya birinci parametr kimi callback,
ikinci parametr kimi isə massiv qəbul edir.
Funksiya hər bir massiv elementinə callback tətbiq edir
və dəyişdirilmiş massivi qaytarır.
Gəlin, əvvəllər əldə etdiyimiz bilikləri nəzərə alaraq bu funksiyanın istifadə variantlarına nəzər salaq.
Variant 1
Daxili
sqrt
funksiyasından istifadə edərək hər bir massiv elementindən
kvadrat kök alaq.
Bunun üçün parametr kimi callback-də bu funksiyanın adı olan sətri ötürəcəyik:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Variant 2
Yaratdığımız adi funksiya vasitəsilə hər bir massiv elementinin kvadratını alaq. Bunun üçün parametr kimi callback-də bu funksiyanın adı olan sətri ötürəcəyik:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Variant 3
Funksiyamızı dəyişənə yazılmış anonim funksiyaya çevirək:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Variant 4
Anonim funksiyanı parametr kimi ötürək:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Variant 5
Ox funksiyasından istifadə edək:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Variant 6
İndi isə ədədin qüvvətə yüksəldilməsi callback-in xarici dəyişəni tərəfindən təyin edilsin.
use vasitəsilə bu dəyişənə çıxış əldə edək:
<?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
Əvvəlki kodu ox funksiyası vasitəsilə yenidən yazaq.
İndi $pow dəyişəni avtomatik olaraq əlçatan olacaq:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktiki tapşırıqlar
Sətirlərdən ibarət massiv verilib. Hər bir massiv elementinin mətnini böyük hərflərə çevirin.
Sətirlərdən ibarət massiv verilib. Hər bir massiv elementinin mətnini tərsinə çevirin.