PHP’de Arrow Function ve Dizi Fonksiyonlarında Kullanımı

PhP 7.4 ile fonksiyon tanımlamanın yeni ve kısa bir yöntemi geldi. Tek satır ile => sembollerini kullanarak bir fonksiyon tanımlayabiliriz.

$topla = fn($a, $b) => $a + $b;

echo $topla(3, 5); // ekrana 5 basacaktır.

Normal fonksiyonlardan ayıran en önemli özelliği dış alandaki (outer scope) değişkenleri de kullanmamıza imkan verir. Aşağıdaki örnekte indirim oranı fonksiyon içinde tanımlanmadan kullanıldı. Burada dikkat edilmesi gereken bir nokta da dış alandaki değişken fonksiyon içinde değiştirilemez. Fakat parametre olarak referans verildiğinde değişiklik yapılabilir.

$indirim = 0.10; // yüzde 10 indirim

$indirimliFiyat = fn($fiyat) => $fiyat * (1 - $indirim);

echo $indirimliFiyat(150); // ekrana 135 basacaktır.

$indirimliGuncelle = fn($yeni) => $indirim = $yeni;
$indirimliGuncelle(0.5);

echo $indirim; // 0.1 basacaktır ekrana

Kısaca ok işareti ile fonksiyon oluşturmayı gösterdik, şimdi dizilerde kullanılabilecek fonksiyonlarda örnek kullanımlarına bakalım.

array_map

Bir dizi içindeki elemanları belirlenen işlemden geçirerek yeni bir dizi döner. Dizideki eleman sayısını değiştirmez.

$meyveler = ["elma", "armut", "kiraz"];
$buyukMeyveler = array_map(fn($eleman) => strtoupper($eleman), $meyveler);
var_dump($buyukMeyveler);
/* ekrana aşağıdaki veriyi basar
Array
(
    [0] => ELMA
    [1] => ARMUT
    [2] => KIRAZ
)*/
array_filter

Bir dizi içindeki tüm elemanlar tanımlanan fonksiyondan geçer ve yeni bir dizi döner. Bu fonksiyon true döner ise eleman yeni diziye eklenir. Dizideki anahtarlar (array key) korunur.

$ogrenciler = [
    ["isim" => "Ali", "puan" => 60],
    ["isim" => "Ayşe", "puan" => 92],
    ["isim" => "Mehmet", "puan" => 78],
    ["isim" => "Zeynep", "puan" => 65],
];
$basarili = array_filter($ogrenciler, fn($eleman) => $eleman["puan"] >= 70);
var_dump($basarili);
// Ekrana aşağıdaki verileri basar
/*
array(2) {
  [1]=>
  array(2) {
    ["isim"]=>
    string(5) "Ayşe"
    ["puan"]=>
    int(92)
  }
  [2]=>
  array(2) {
    ["isim"]=>
    string(6) "Mehmet"
    ["puan"]=>
    int(78)
  }
}
*/
array_reduce

Son olarak array_reduce ile bir örnek yapalım. Bu fonksyion ile bir dizinin elemanlarını bir fonksiyondan geçirerek tek bir değer dönebilirsiniz. Önceki örnekteki öğrencilerimizin ortalam notlarını bulabiliriz.

$ogrenciler = [
    ["isim" => "Ali", "puan" => 60],
    ["isim" => "Ayşe", "puan" => 92],
    ["isim" => "Mehmet", "puan" => 78],
    ["isim" => "Zeynep", "puan" => 65],
];
$toplam_not = array_reduce(
    $ogrenciler, 
    fn($toplam, $eleman) => $toplam + $eleman["puan"]
);
echo 'Ortalama: ' . ($toplam_not / count($ogrenciler));
// Ortalama: 73.75

Ok işlevleri olarak çevirilen arrow functions kullanımını diziler için olan fonksiyonlarla gösterdik.


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir