Callbacks in ingebouwde functies in PHP

In PHP zijn er een aantal ingebouwde functies die een callback als parameter accepteren. We bestuderen het algemene werkingsprincipe aan de hand van de functie array_map. Deze functie accepteert als eerste parameter een callback, en als tweede - een array. De functie past de callback toe op elk element van de array en geeft de gewijzigde array terug.

Laten we eens kijken naar de opties voor het gebruik van deze functie, rekening houdend met de kennis die we eerder hebben opgedaan.

Optie 1

Halen we uit elk element van de array de vierkantswortel met behulp van de ingebouwde functie sqrt. Om dit te doen, geven we als callback-parameter een string door met de naam van deze functie:

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

Optie 2

Laten we elk element van de array kwadrateren met behulp van een door ons gemaakte gewone functie. Om dit te doen, geven we als callback-parameter een string door met de naam van deze functie:

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

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

Optie 3

Laten we onze functie omzetten naar een anonieme functie, opgeslagen in een variabele:

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

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

Optie 4

Laten we de anonieme functie direct als parameter doorgeven:

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

Optie 5

Laten we een arrow function gebruiken:

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

Optie 6

Stel dat de macht, waartoe het getal verheven moet worden, wordt ingesteld door een externe variabele van de callback. Laten we deze variabele gebruiken door er toegang toe te krijgen via 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);
?>

Optie 7

Laten we de vorige code herschrijven met een arrow function. Nu is de variabele $pow automatisch beschikbaar:

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

Praktische opdrachten

Задание 1

Gegeven een array met strings. Zet de tekst van elk element in de array om naar hoofdletters.

Задание 2

Gegeven een array met strings. Keer de tekst van elk element in de array om, zodat de karakters in omgekeerde volgorde staan.