Menu
Coddy logo textTech

'array_reduce' ile İndirgeme

Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 43 / 68.

array_reduce() fonksiyonu, array_map() ve array_filter() fonksiyonlarından farklı bir yaklaşım benimser. Yeni bir dizi döndürmek yerine, bir dizideki tüm öğeleri işleyerek tek bir değer üretir. Bu, onu toplamları hesaplamak, maksimumları bulmak veya tüm öğeleri tek bir sonuçta birleştirmek gibi işlemler için mükemmel kılar.

Fonksiyon üç parametre gerektirir: işlenecek dizi, elemanların nasıl birleştirileceğini tanımlayan bir geri çağırma (callback) fonksiyonu ve isteğe bağlı bir başlangıç değeri. Geri çağırma fonksiyonu iki parametre alır: biriktirilmiş sonuç ("carry" olarak adlandırılır) ve mevcut dizi elemanı.

<?php
function addNumbers($carry, $item) {
    return $carry + $item;
}

$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, "addNumbers", 0);
// Sonuç: 15
?>

Bu örnekte, fonksiyon 0 başlangıç değeriyle başlar, ardından her bir dizi öğesi ve mevcut toplam ile addNumbers fonksiyonunu tekrar tekrar çağırır. Bu biriktirme süreci tüm öğeler işlenene kadar devam eder ve size nihai indirgenmiş değeri bırakır.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

İki girdi alacaksınız: virgülle ayrılmış bir sayı listesi ve bir işlem türü. İlk girdi, 5,10,15,20,25 formatında bir dize olarak sayıları içerir ve ikinci girdi, işlemi belirten tek bir karakterdir: toplam için S, çarpım için P veya maksimum için M.

Her iki girdiyi de okuyun, virgülle ayrılmış sayıları bir tam sayı dizisine dönüştürün, belirtilen işlemi gerçekleştiren özel bir geri çağırma (callback) fonksiyonu oluşturun, tüm sayıları tek bir sonuçta işlemek için geri çağırma fonksiyonunuzla ve uygun bir başlangıç değeriyle birlikte array_reduce() kullanın ve nihai sonucu yazdırın.

İşlem detayları:

  • S (Toplam): Tüm sayıları birbirine ekleyin (başlangıç değeri: 0)
  • P (Çarpım): Tüm sayıları birbiriyle çarpın (başlangıç değeri: 1)
  • M (Maksimum): En büyük sayıyı bulun (başlangıç değeri: dizideki ilk sayı veya çok küçük bir sayı)

Geri çağırma fonksiyonunuz iki parametre kabul etmelidir: birikmiş sonuç (carry) ve mevcut dizi öğesi (item), ardından işlem türüne göre güncellenmiş birikmiş değeri döndürmelidir.

Girdi formatı:

  • İlk satır: Virgülle ayrılmış sayılar (örnek: 5,10,15,20,25)
  • İkinci satır: İşlem türü - S, P veya M (örnek: S)

Beklenen çıktı: İndirgeme (reduce) işleminin sonucunu temsil eden tek bir sayı

Kopya kağıdı

array_reduce() fonksiyonu, bir dizideki tüm öğeleri işleyerek tek bir değer üretir; toplamları hesaplamak veya öğeleri birleştirmek için mükemmeldir.

Üç parametre gerektirir: işlenecek dizi, bir geri çağırma (callback) fonksiyonu ve isteğe bağlı bir başlangıç değeri. Geri çağırma fonksiyonu, birikmiş sonucu (carry) ve mevcut dizi öğesini alır.

<?php
function addNumbers($carry, $item) {
    return $carry + $item;
}

$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, "addNumbers", 0);
// Sonuç: 15
?>

Sonuçları 2 ondalık basamağa kadar biçimlendirmek için number_format($total, 2) kullanın.

Kendin dene

<?php
// Girdiyi oku
$numbers_input = trim(fgets(STDIN));
$operation = trim(fgets(STDIN));

// Virgülle ayrılmış dizeyi tam sayı dizisine dönüştür
$numbers = array_map('intval', explode(',', $numbers_input));

// TODO: Kodunuzu aşağıya yazın
// İşlem türüne göre bir geri çağırma (callback) fonksiyonu oluşturun
// Geri çağırma fonksiyonunuz ve uygun başlangıç değeri ile array_reduce() kullanın


// Sonucu yazdır
echo $result;
?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler