Povratni klici v vgrajenih funkcijah v PHP

V PHP obstaja vrsta vgrajenih funkcij, ki kot parameter sprejemajo povratne klic. Splošno načelo dela z njimi bomo preučili na primeru funkcije array_map. Ta funkcija kot prvi parameter sprejme povratni klic, kot drugega pa - array. Funkcija uporabi povratni klic za vsak element array in vrne spremenjen array.

Poglejmo si možnosti uporabe te funkcije ob upoštevanju prej pridobljenega znanja.

Možnost 1

Izluščimo iz vsakega elementa array kvadratni koren s pomočjo vgrajene funkcije sqrt. Za to kot povratni klic parameter posredujemo niz z imenom te funkcije:

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

Možnost 2

Dvignimo vsak element array na kvadrat s pomočjo ustvarjene navadne funkcije. Za to kot povratni klic parameter posredujemo niz z imenom te funkcije:

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

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

Možnost 3

Preoblikujmo našo funkcijo v anonimno, zapisano v spremenljivko:

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

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

Možnost 4

Posredujmo anonimno funkcijo kot parameter:

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

Možnost 5

Uporabimo streličasto funkcijo:

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

Možnost 6

Naj bo sedaj stopnja, na katero je treba dvigniti število, podana z zunanjo spremenljivko povratnega klica. Uporabimo to spremenljivko, in ji dostopamo preko 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);
?>

Možnost 7

Prepišimo prejšnjo kodo s streličasto funkcijo. Sedaj bo spremenljivka $pow dostopna samodejno:

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

Praktične naloge

Задание 1

Dan je array z nizi. Prevedite besedilo vsakega elementa array v velike črke.

Задание 2

Dan je array z nizi. Obrnite besedilo vsakega elementa array tako, da znaki gredo v obratnem vrstnem redu.