Քոլբեքներ ներդրված ֆունկցիաներում 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);
?>
Գործնական առաջադրանքներ
Տրված է տողերով զանգված։ Թարգմանեք զանգվածի յուրաքանչյուր տարրի տեքստը վերին ռեգիստր։
Տրված է տողերով զանգված։ Հակադարձեք զանգվածի յուրաքանչյուր տարրի տեքստը այնպես, որ նիշերը գնան հակառակ հերթականությամբ։