Iebūvēto funkciju atsauces izsaukumi PHP

PHP ir vairākas iebūvētas funkcijas, kas kā parametru pieņem atsauces izsaukumus. Vispārējo darbības principu ar tām mēs izpētīsim ar funkcijas array_map piemēru. Šī funkcija kā pirmo parametru pieņem atsauces izsaukumu, bet kā otro - masīvu. Funkcija piemēro atsauces izsaukumu katram masīva elementam un atgriež modificēto masīvu.

Apskatīsim šīs funkcijas izmantošanas variantus, ņemot vērā mūsu iepriekš iegūtās zināšanas.

Variants 1

Iegūsim no katra masīva elementa kvadrātsakni, izmantojot iebūvēto funkciju sqrt. Lai to izdarītu, kā atsauces izsaukumu parametrā nodosim virkni ar šīs funkcijas nosaukumu:

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

Variants 2

Kāpināsim katru masīva elementu kvadrātā, izmantojot mūsu izveidoto parasto funkciju. Lai to izdarītu, kā atsauces izsaukumu parametrā nodosim virkni ar šīs funkcijas nosaukumu:

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

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

Variants 3

Pārveidosim mūsu funkciju par anonīmu funkciju, ierakstītu mainīgajā:

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

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

Variants 4

Nodosim anonīmo funkciju kā parametru:

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

Variants 5

Izmantosim bultiņu funkciju:

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

Variants 6

Lai tagad pakāpe, kurā jākāpina skaitlis, tiktu norādīta ar atsauces izsaukuma ārējo mainīgo. Izmantosim šo mainīgo, iegūstot piekļuvi tam caur 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);
?>

Variants 7

Pārrakstīsim iepriekšējo kodu, izmantojot bultiņu funkciju. Tagad mainīgais $pow būs pieejams automātiski:

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

Praktiskie uzdevumi

Задание 1

Dots masīvs ar virknēm. Pārveidojiet katra elementa tekstu augšējā reģistrā.

Задание 2

Dots masīvs ar virknēm. Apgrieziet katra elementa tekstu otrādi, lai rakstzīmes ietu apgrieztā secībā.