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<?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<?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<?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<?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<?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<?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<?php
  $arr = [1, 2, 3, 4, 5];
  $pow = 3;
  
  $res = array_map(fn ($num) => $num ** $pow, $arr);
  var_dump($res);
?>

Amaly tabşyryklar

Задание 1

Setirler bilen massiw berlen. Massawiň her elementiniň tekstini ýokary registre çalyş.

Задание 2

Setirler bilen massiw berlen. Massawiň her elementiniň tekstini tersine, ýagny nyşanlaryň ters tertipde ýygnanyşygy ýaly, öwüriň.