Meydan Okuma: Benzersiz Öge Filtresi
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 68 / 68.
Görev
KolayTek bir girdi alacaksınız: yinelenen öğeler içerebilen, virgülle ayrılmış bir öğe dizesi.
Girdi şu biçimde bir dize olacaktır: apple,banana,apple,orange,banana,grape,apple
Girdi dizesini okuyun ve bir öğe dizisine bölün. Yinelenen öğeleri kaldırmak ve her benzersiz öğenin yalnızca ilk örneğini tutmak için özel bir geri çağırma (callback) işleviyle array_filter() kullanın.
Bunu başarmak için, hangi öğelerin daha önce görüldüğünü takip eden bir geri çağırma işlevi oluşturun. Geri çağırma işlevi, ilk kez karşılaşılan öğeler için true, yinelenenler için false döndürmelidir. Geri çağırma işlevinin dışındaki bir değişkeni kullanabilir ve güncellemelerin array_filter'ın geri çağırma işlevine yaptığı çağrılar boyunca kalıcı olması için bu değişkeni use (&$seen) ile referans yoluyla yakalayabilirsiniz.
Filtrelemeden sonra, her bir benzersiz öğeyi orijinal girdide ilk göründükleri sırayla ayrı bir satıra yazdırın.
Girdi biçimi:
- Virgülle ayrılmış öğeler içeren tek bir satır (örnek:
apple,banana,apple,orange)
Beklenen çıktı: Her bir benzersiz öğe, girdideki ilk görünüş sırasına göre ayrı bir satıra yazdırılır
Kendin dene
<?php
// Girdiyi oku
$input = trim(fgets(STDIN));
// Girdiyi bir diziye ayır
$items = explode(',', $input);
// TODO: Kodunuzu aşağıya yazın
// Yinelenenleri kaldırmak için özel bir geri çağırma fonksiyonu ile array_filter() kullanın
// Her bir benzersiz öğeyi ayrı bir satıra yazdırın
?>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 Egzersizi7Tarih ve Saatlerle Çalışmak
'date()' Fonksiyonu'time()' ile Unix Zaman DamgalarıDateTime Nesnesine GirişDateTime Nesnelerini BiçimlendirmeDateTime Nesnelerini DeğiştirmeÖzet: Tarih Hesaplamaları10Final Meydan Okumaları
Meydan Okuma: Palindrom KontrolüMeydan Okuma: Karakter SıklığıMeydan Okuma: Alışveriş Sepeti ToplamıMeydan Okuma: Benzersiz Öge Filtresi2İ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ıralamaKendi başına pratik yap: Online PHP derleyicisi