PHP'de Yerleşik Fonksiyonlarda Geri Çağrılar
PHP'de, parametre olarak geri çağrıları kabul eden bir dizi yerleşik fonksiyon vardır.
Bunlarla çalışmanın genel prensibini
array_map fonksiyonu örneğinde inceleyeceğiz.
Bu fonksiyon ilk parametre olarak bir geri çağrı,
ikinci parametre olarak ise bir dizi kabul eder. Fonksiyon,
geri çağrıyı dizinin her elemanına uygular
ve değiştirilmiş diziyi döndürür.
Şimdi, önceden edindiğimiz bilgileri göz önünde bulundurarak bu fonksiyonun kullanım seçeneklerine bir göz atalım.
Seçenek 1
Dizinin her elemanının karekökünü,
yerleşik
sqrt
fonksiyonunu kullanarak alalım.
Bunun için, parametre olarak geri çağrı olarak
bu fonksiyonun adını içeren bir dize ileteceğiz:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Seçenek 2
Dizinin her elemanının karesini, bizim oluşturduğumuz sıradan bir fonksiyonla alalım. Bunun için, parametre olarak geri çağrı olarak bu fonksiyonun adını içeren bir dize ileteceğiz:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Seçenek 3
Fonksiyonumuzu, bir değişkene atanmış anonim bir fonksiyona dönüştürelim:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Seçenek 4
Anonim fonksiyonu doğrudan parametre olarak geçirelim:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Seçenek 5
Ok fonksiyonunu kullanalım:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Seçenek 6
Şimdi, sayının hangi kuvvete yükseltileceğini
geri çağrının dış değişkeni belirlesin.
Bu değişkeni, use aracılığıyla
erişim sağlayarak kullanalım:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Seçenek 7
Önceki kodu ok fonksiyonu kullanarak yeniden yazalım.
Artık $pow değişkeni
otomatik olarak erişilebilir olacak:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Pratik Görevler
Dizelerden oluşan bir dizi verilmiştir. Dizinin her elemanının metnini büyük harfe dönüştürün.
Dizelerden oluşan bir dizi verilmiştir. Dizinin her elemanının metnini, sembollerin ters sırada olacak şekilde çevirin.