Özel Fonksiyon ile 'array_map'
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 40 / 68.
strtoupper gibi yerleşik fonksiyonlar array_map() ile iyi çalışsa da, asıl güç kendi özel fonksiyonlarınızı kullanmaktan gelir. Bu, tam ihtiyaçlarınıza göre uyarlanmış belirli dönüşümler oluşturmanıza olanak tanır.
Özel bir fonksiyonu array_map() ile kullanmak için, ilk parametre olarak fonksiyon adını bir dize (string) olarak geçmeniz yeterlidir. Özel fonksiyonunuz bir parametre (mevcut dizi öğesi) kabul etmeli ve dönüştürülmüş değeri döndürmelidir.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// Sonuç: [2, 4, 6, 8, 10]
?>Bu yaklaşım, her bir öğenin nasıl işleneceği üzerinde size tam kontrol sağlar. Özel fonksiyonunuz içinde karmaşık hesaplamalar, dize manipülasyonları veya başka herhangi bir mantık yürütebilirsiniz; bu da array_map() fonksiyonunu veri dönüştürme görevleri için inanılmaz derecede çok yönlü hale getirir.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
Kolayİki girdi alacaksınız: Celsius cinsinden virgülle ayrılmış bir sıcaklık listesi ve dönüşüm için bir hedef birim (Fahrenheit için F veya Kelvin için K). İlk girdi, 0,10,20,30,100 formatında bir dize olarak sıcaklıkları içerir ve ikinci girdi, dönüşüm türünü belirten tek bir karakterdir.
Her iki girdiyi de okuyun, virgülle ayrılmış sıcaklıkları bir sayı dizisine dönüştürün, bir Celsius sıcaklığını hedef birime dönüştüren özel bir fonksiyon oluşturun, tüm sıcaklıkları dönüştürmek için özel fonksiyonunuzla birlikte array_map() kullanın ve her bir dönüştürülmüş sıcaklığı, ondalık basamaktan sonra 2 hane olacak şekilde yuvarlayarak ayrı bir satıra yazdırın.
Dönüşüm formülleri:
- Celsius'tan Fahrenheit'a:
(C × 9/5) + 32 - Celsius'tan Kelvin'e:
C + 273.15
Girdi formatı:
- İlk satır: Celsius cinsinden virgülle ayrılmış sıcaklıklar (örnek:
0,10,20,30,100) - İkinci satır: Hedef dönüşüm birimi -
FveyaK(örnek:F)
Beklenen çıktı: Her bir dönüştürülmüş sıcaklık, ondalık basamaktan sonra 2 hane olacak şekilde yuvarlanmış olarak ayrı bir satıra yazdırılır
Kopya kağıdı
array_map() ile özel fonksiyonları, fonksiyon adını bir dize olarak geçirerek kullanın. Özel fonksiyon bir parametre (mevcut dizi öğesi) kabul etmeli ve dönüştürülmüş değeri döndürmelidir.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// Sonuç: [2, 4, 6, 8, 10]
?>Bu yaklaşım, fonksiyonunuz içinde karmaşık hesaplamalara, dize işlemlerine veya herhangi bir özel mantığa izin vererek öğe işleme üzerinde tam kontrol sağlar.
Kendin dene
<?php
// Virgülle ayrılmış sıcaklıkları oku
$temperatures = fgets(STDIN);
// Hedef birimi oku (F veya K)
$unit = trim(fgets(STDIN));
// Virgülle ayrılmış dizeyi bir sayı dizisine dönüştür
$tempArray = explode(',', trim($temperatures));
// TODO: Kodunuzu aşağıya yazın
// Celsius'u hedef birime dönüştürmek için özel bir fonksiyon oluşturun
// Dönüşümü tüm sıcaklıklara uygulamak için array_map() kullanın
// Dönüştürülen her sıcaklığı, virgülden sonra 2 basamağa yuvarlayarak 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