Kollbëqet në funksionet e integruara në PHP

Në PHP ekziston një sërë funksionesh të integruara, që si parametër pranojnë kollbëqe. Parimin e përgjithshëm të punës me to do ta studiojmë në shembullin e funksionit array_map. Ky funksion si parametër të parë pranon një kollbëq, dhe si të dytë - një array. Funksioni aplikon kollbëqin në çdo element të array dhe kthen array-in e modifikuar.

Të shohim variantet e përdorimit të këtij funksioni duke marrë parasysh njohuritë e marra më parë.

Variant 1

Të nxjerrim nga çdo element i array rrenjen katrore duke përdorur funksionin e integruar sqrt. Për këtë, si kollbëq do të kalojmë si parametër vargun me emrin e këtij funksioni:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map('sqrt', $arr);
  var_dump($res);
?>

Variant 2

Të ngremë çdo element të array në katror duke përdorur një funksion të krijuar nga ne. Për këtë, si kollbëq do të kalojmë si parametër vargun me emrin e këtij funksioni:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  function func($num) {
    return $num ** 2;
  }

  $res = array_map('func', $arr);
  var_dump($res);
?>

Variant 3

Të konvertojmë funksionin tonë në një funksion anonim, të regjistruar në një variabël:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $func = function ($num) {
    return $num ** 2;
  };

  $res = array_map($func, $arr);
  var_dump($res);
?>

Variant 4

Të kalojmë funksionin anonim si parametër:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map(function ($num) {
    return $num ** 2;
  }, $arr);
  
  var_dump($res);
?>

Variant 5

Të përdorim funksionin shigjetor:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map(fn ($num) => $num ** 2, $arr);
  var_dump($res);
?>

Variant 6

Le të themi që fuqia, në të cilën duhet të ngremë numrin, përcaktohet nga një variabël e jashtme e kollbëqit. Le të përdorim këtë variabël, duke marrë akses te ajo përmes use:

php<?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

Të rishkruajmë kodin e mëparshëm duke përdorur funksionin shigjetor. Tani variabla $pow do të jetë e disponueshme automatikisht:

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

Detyra praktike

Задание 1

Është dhënë një array me vargje. Përktheni tekstin e çdo elementi të array në regjistër të sipërm.

Задание 2

Është dhënë një array me vargje. Ktheni tekstin e çdo elementi të array në mënyrë të tillë që simbolet të shkojnë në rend të kundërt.