PHP-dä gurluşyk funksiýalarynda callback-lar
PHP-de birnäçe gurluşyk funksiýalary bar,
olar parametr hökmünde callback-lar kabul edýär.
Olar bilen işlemiň umumy ýörelgesini biz
array_map funksiýasynyň mysalynda öwreris.
Bu funksiýa birinji parametr hökmünde
callback, ikinji parametr hökmünde bolsa
massiw kabul edýär. Funksiýa callback-i
massiwiň her elementine ýerleşdirýär
we üýtgedilen massiw yzyna gaytaryr.
Geliň, bu funksiýany ulanyş wariantlaryna öň alan bilimlerimizi göz öňünde tutup seredeliň.
Wariant 1
Massiwiň her elementinden
kwadrat köküni çykarmak üçin
gurluşyk
sqrt
funksiýasyny ulanarys.
Bunun üçin parametr hökmünde callback-e
bu funksiýanyň ady bilen setiri ibereris:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Wariant 2
Massawiň her elementini kwadratyňa ýokarlandyrmak üçin döreden adaty funksiýamyzy ulanarys. Bunun üçin parametr hökmünde callback-e bu funksiýanyň ady bilen setiri ibereris:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Wariant 3
Funksiýamyzy anonim funksiýa hökmünde, üýtgeýjide saklap ýazyş:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Wariant 4
Anonim funksiýany parametr hökmünde iberiň:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Wariant 5
Oka funksiýasyny ulanalyň:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Wariant 6
Indi, sanlaryň haýsy derejä ýokarlandyrmaly
digi, callback-iň daşarky üýtgeýjisi bilen kesgitlenýär.
Bu üýtgeýjä use arkaly girip, ony ulanalyň:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Wariant 7
Öňki kody oka funksiýasy arkaly ýazaýalyň.
Indi $pow üýtgeýjisi awtomatik ýagdaýda elýeterli bolar:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Amaly tabşyryklar
Setirler bilen massiw berlen. Massawiň her elementiniň tekstini ýokary registre çalyş.
Setirler bilen massiw berlen. Massawiň her elementiniň tekstini tersine, ýagny nyşanlaryň ters tertipde ýygnanyşygy ýaly, öwüriň.