Callback dalam Fungsi Bawaan PHP
Di PHP, ada sejumlah fungsi bawaan
yang menerima callback sebagai parameternya.
Prinsip umum bekerja dengannya akan kita pelajari
menggunakan contoh fungsi array_map.
Fungsi ini menerima callback sebagai parameter pertama,
dan array sebagai parameter kedua. Fungsi ini menerapkan
callback ke setiap elemen array
dan mengembalikan array yang telah diubah.
Mari kita lihat berbagai opsi penggunaan fungsi ini dengan mempertimbangkan pengetahuan yang telah kita peroleh sebelumnya.
Opsi 1
Ambil akar kuadrat dari setiap elemen array
menggunakan fungsi bawaan
sqrt.
Untuk melakukannya, kita akan meneruskan string
berisi nama fungsi tersebut sebagai parameter callback:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Opsi 2
Pangkatkan setiap elemen array menjadi kuadrat menggunakan fungsi biasa yang kita buat. Untuk melakukannya, kita akan meneruskan string berisi nama fungsi tersebut sebagai parameter callback:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Opsi 3
Ubah fungsi kita menjadi fungsi anonim, yang disimpan dalam sebuah variabel:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Opsi 4
Teruskan fungsi anonim langsung sebagai parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Opsi 5
Gunakan fungsi panah (arrow function):
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Opsi 6
Sekarang, misalkan pangkat yang digunakan
untuk memangkatkan angka, ditentukan oleh variabel eksternal
dari callback. Mari kita gunakan variabel ini,
dengan mengaksesnya melalui use:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Opsi 7
Tulis ulang kode sebelumnya menggunakan fungsi panah.
Sekarang variabel $pow
akan dapat diakses secara otomatis:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Tugas Praktis
Diberikan sebuah array berisi string. Ubahlah teks dari setiap elemen array menjadi huruf besar (upper case).
Diberikan sebuah array berisi string. Baliklah teks dari setiap elemen array sehingga karakternya berurutan secara terbalik.