'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.
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
?>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
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu Sıralama6Yüksek Mertebeden Dizi Fonksiyonları
'array_map' ile DönüştürmeÖzel Fonksiyon ile 'array_map''array_filter' ile FiltrelemeÖzel Fonksiyon ile 'array_filter''array_reduce' ile İndirgeme'array_walk' ile GezinmeÖzet: Veri İşleme