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.

İşlev üç parametre gerektirir: işlenecek dizi, öğelerin nasıl birleştirileceğini tanımlayan bir geri çağırma işlevi ve isteğe bağlı bir başlangıç değeri. Geri çağırma işlevi iki parametre alır: birikmiş sonuç ("carry" olarak adlandırılır) ve geçerli dizi öğesi.

<?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.

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 biçiminde 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 okuyun, virgülle ayrılmış sayıları bir tamsayı dizisine dönüştürün, belirtilen işlemi gerçekleştiren özel bir geri çağırma işlevi oluşturun, tüm sayıları tek bir sonuçta işlemek için geri çağırma işleviniz ve uygun bir başlangıç değeriyle array_reduce() kullanın ve son sonucu yazdırın.

İşlem ayrıntıları:

  • 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 işleviniz iki parametre kabul etmelidir: biriktirilmiş sonuç (carry) ve geçerli dizi öğesi (item); ardından işlem türüne göre güncellenmiş biriktirilmiş değeri döndürmelidir.

Girdi biçimi:

  • İ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ı: Reduce işleminin sonucunu temsil eden tek bir sayı

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 callback fonksiyonu oluşturun
// Callback 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

Kendi başına pratik yap: Online PHP derleyicisi