Ö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 işlevler array_map() ile iyi çalışsa da asıl güç, kendi özel işlevlerinizi kullanmaktan gelir. Bu, tam gereksinimlerinize göre uyarlanmış belirli dönüşümler oluşturmanızı sağlar.
array_map() ile özel bir işlev kullanmak için, ilk parametre olarak işlev adını bir dize şeklinde geçirmeniz yeterlidir. Özel işleviniz bir parametreyi (geçerli dizi öğesini) 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 öğenin nasıl işleneceği üzerinde tam kontrol sağlar. Özel işleviniz içinde karmaşık hesaplamalar, dize işlemleri veya başka herhangi bir mantık gerçekleştirebilir; böylece array_map() veri dönüştürme görevleri için inanılmaz derecede çok yönlü hale gelir.
Görev
Kolayİki girdi alacaksınız: Celsius cinsinden virgülle ayrılmış sıcaklıklar listesi ve dönüşüm için hedef birim (F Fahrenheit veya K Kelvin). İlk girdi, 0,10,20,30,100 biçiminde bir dize olarak sıcaklıkları içerir ve ikinci girdi, dönüşüm türünü belirten tek bir karakterdir.
Her iki girdiyi okuyun, virgülle ayrılmış sıcaklıkları sayılardan oluşan bir diziye dönüştürün, Celsius sıcaklığını hedef birime dönüştüren özel bir işlev oluşturun, tüm sıcaklıkları dönüştürmek için özel işlevinizle array_map() kullanın ve dönüştürülen her sıcaklığı 2 ondalık basamağa 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 biçimi:
- İ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ı: Dönüştürülen her sıcaklığın 2 ondalık basamağa yuvarlanarak ayrı bir satıra yazdırılması
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: Kodunu aşağıya yaz
// Celsius'u hedef birime dönüştürmek için özel bir fonksiyon oluştur
// Dönüşümü tüm sıcaklıklara uygulamak için array_map() kullan
// Her dönüştürülmüş sıcaklığı ayrı bir satıra, 2 ondalık basamağa yuvarlanmış olarak yazdır
?>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 İşlemeKendi başına pratik yap: Online PHP derleyicisi