Callbacks in integrierten Funktionen in PHP
In PHP gibt es eine Reihe integrierter Funktionen,
die Callbacks als Parameter entgegennehmen.
Das allgemeine Prinzip der Arbeit mit ihnen werden wir
am Beispiel der Funktion array_map lernen.
Diese Funktion nimmt als ersten Parameter einen
Callback entgegen und als zweiten - ein Array. Die Funktion wendet
den Callback auf jedes Element des Arrays an
und gibt das geänderte Array zurück.
Lassen Sie uns die Verwendungsmöglichkeiten dieser Funktion unter Berücksichtigung unserer bisherigen Kenntnisse betrachten.
Variante 1
Extrahieren wir aus jedem Element des Arrays
die Quadratwurzel mit der integrierten
Funktion
sqrt.
Dazu übergeben wir als Callback-Parameter
einen String mit dem Namen dieser Funktion:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Variante 2
Potenziere jedes Element des Arrays quadratisch mit einer von uns erstellten gewöhnlichen Funktion. Dazu übergeben wir als Callback-Parameter einen String mit dem Namen dieser Funktion:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Variante 3
Ändern wir unsere Funktion in eine anonyme Funktion um, die in einer Variable gespeichert ist:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Variante 4
Übergeben wir die anonyme Funktion als Parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Variante 5
Verwenden wir eine Pfeilfunktion:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Variante 6
Lass nun der Exponent, in den die
Zahl potenziert werden soll, durch eine externe Variable
des Callbacks vorgegeben sein. Nutzen wir diese Variable,
indem wir über use darauf zugreifen:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Variante 7
Schreiben wir den vorherigen Code mit einer Pfeilfunktion um.
Nun ist die Variable $pow
automatisch verfügbar:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktische Aufgaben
Gegeben ist ein Array mit Strings. Setze den Text jedes Elements des Arrays in Großbuchstaben um.
Gegeben ist ein Array mit Strings. Drehe den Text jedes Elements des Arrays so um, dass die Zeichen in umgekehrter Reihenfolge erscheinen.