Menu
Coddy logo textTech

'array_map' ile Dönüştürme

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

array_map() fonksiyonu, bir dizideki her öğeye bir geri çağırma (callback) fonksiyonu uygulayarak her öğeyi dönüştüren güçlü bir araçtır. Orijinal diziyi değiştiren fonksiyonların aksine, array_map() dönüştürülmüş değerlerle tamamen yeni bir dizi oluşturur ve döndürür.

Temel sözdizimi iki parametre gerektirir: birincisi, uygulamak istediğiniz geri çağırma (callback) fonksiyonu ve ikincisi, dönüştürmek istediğiniz dizidir. PHP, array_map() ile geri çağırma fonksiyonu olarak mükemmel şekilde çalışan birçok yerleşik fonksiyona sahiptir.

<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Sonuç: ["ALICE", "BOB", "CHARLIE"]
?>

Bu örnekte, strtoupper, $names dizisindeki her bir öğeye uygulanır. Orijinal dizi değişmeden kalırken, $uppercaseNames dönüştürülmüş sonuçları içerir. Bu, orijinal değerleri kaybetmeden verileri işlemeniz gerektiğinde array_map() fonksiyonunu ideal hale getirir.

challenge icon

Görev

Kolay

İki girdi alacaksınız: virgülle ayrılmış ürün fiyatları listesi ve bir indirim yüzdesi. İlk girdi, 19.99,25.50,12.75,8.00 formatında bir dize olarak fiyatları içerir ve ikinci girdi, sayı olarak indirim yüzdesidir (örnek: 15).

Her iki girdiyi de okuyun, virgülle ayrılmış fiyatları bir sayı dizisine dönüştürün, dönüşüm için yerleşik floatval fonksiyonuyla birlikte array_map() kullanarak ve indirim hesaplaması yaparak her fiyata indirim yüzdesini uygulayın ve her indirimli fiyatı, virgülden sonra 2 basamağa yuvarlanmış şekilde ayrı bir satıra yazdırın.

İndirimli fiyatı hesaplamak için: orijinal fiyatı (100 - discount) / 100 ile çarpın.

Giriş formatı:

  • İlk satır: Virgülle ayrılmış ürün fiyatları (örnek: 19.99,25.50,12.75,8.00)
  • İkinci satır: Sayı olarak indirim yüzdesi (örnek: 15)

Beklenen çıktı: Her indirimli fiyatın ayrı bir satıra yazdırılması, virgülden sonra 2 basamağa yuvarlanmış şekilde (örnek: 16.99, 21.68, 10.84, 6.80)

Kendin dene

<?php
// Girdiyi oku
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));

// Virgülle ayrılmış fiyatları diziye dönüştür
$prices = explode(',', $prices_input);

// YAPILACAK: Kodunuzu aşağıya yazın
// Her fiyata indirimi uygulamak için array_map() kullanın


// Her bir indirimli fiyatı ayrı bir satıra yazdırın

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