Özel Fonksiyon ile 'array_filter'
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 42 / 68.
Bir geri çağırma (callback) işlevi olmadan array_filter() boş değerleri kaldırırken, asıl gücü özel bir geri çağırma işlevi sağladığınızda ortaya çıkar. Bu, kendi özel kriterlerinize göre tam olarak hangi öğelerin tutulması gerektiğini belirlemenize olanak tanır.
array_filter() ile özel bir fonksiyon kullanmak için, fonksiyon adınızı ikinci parametre olarak geçirin. Geri çağırma (callback) fonksiyonunuz bir parametre (mevcut dizi öğesi) kabul etmeli ve öğeyi tutmak için true veya hariç tutmak için false döndürmelidir.
<?php
function isEven($number) {
return $number % 2 === 0;
}
$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$evenNumbers = array_filter($numbers, "isEven");
// Sonuç: [2, 4, 6, 8]
?>Bu örnekte, isEven fonksiyonu her sayıyı modül operatörünü kullanarak test eder. Yalnızca true döndüren sayılar (çift sayılar) filtrelenmiş sonuca dahil edilir. Bu yaklaşım, filtreleme mantığı üzerinde size tam kontrol sağlayarak array_filter() fonksiyonunu veri işleme görevleri için inanılmaz derecede çok yönlü hale getirir.
Görev
Kolayİki girdi alacaksınız: virgülle ayrılmış ürün fiyatları listesi ve bir minimum fiyat eşiği. İlk girdi, 15.99,45.00,8.50,120.00,22.75 formatında bir dize olarak fiyatları içerir ve ikinci girdi, sayı olarak minimum fiyat eşiğidir (örnek: 20).
Her iki girdiyi de okuyun, virgülle ayrılmış fiyatları bir sayı dizisine dönüştürün, bir fiyatın eşiğe eşit veya eşikten büyük olup olmadığını kontrol eden özel bir geri çağırma (callback) fonksiyonu oluşturun, yalnızca eşiği karşılayan fiyatları tutmak için özel fonksiyonunuzla birlikte array_filter() kullanın ve filtrelenmiş her fiyatı göründükleri sırayla ayrı bir satıra yazdırın.
Özel geri çağırma fonksiyonunuz bir parametre (fiyat) kabul etmeli ve fiyat eşiğe eşit veya eşikten büyükse true, aksi takdirde false döndürmelidir.
Girdi formatı:
- İlk satır: Virgülle ayrılmış ürün fiyatları (örnek:
15.99,45.00,8.50,120.00,22.75) - İkinci satır: Sayı olarak minimum fiyat eşiği (örnek:
20)
Beklenen çıktı: Eşiği karşılayan veya aşan her fiyatın, orijinal sırasını koruyarak ayrı bir satıra yazdırılması
Kendin dene
<?php
// Girdiyi oku
$prices_input = trim(fgets(STDIN));
$threshold = floatval(fgets(STDIN));
// Virgülle ayrılmış fiyatları diziye dönüştür
$prices = array_map('floatval', explode(',', $prices_input));
// TODO: Kodunuzu aşağıya yazın
// Bir fiyatın >= threshold olup olmadığını kontrol eden özel bir geri çağırma (callback) fonksiyonu oluşturun
// Özel fonksiyonunuzla birlikte array_filter() kullanın
// Filtrelenmiş her 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