Özet: Veri İşleme
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 45 / 68.
Görev
KolayÜç girdi alacaksınız: virgülle ayrılmış bir çalışan adları listesi, bunlara karşılık gelen haftalık çalışma saatlerinin virgülle ayrılmış bir listesi ve minimum saat eşiği. İlk girdi, Alice,Bob,Charlie,Diana,Eve biçiminde adları içerir; ikinci girdi, 45,32,50,28,40 biçiminde sayılar olarak saatleri içerir ve üçüncü girdi, sayı olarak minimum saat eşiğidir (örnek: 35).
Üç girdinin tümünü okuyun ve uygun dizilere dönüştürün. Çalışan adlarının anahtar, çalışma saatlerinin değer olduğu birleşik bir ilişkisel dizi oluşturun. Ardından aşağıdaki işlemleri üst düzey dizi işlevlerini kullanarak gerçekleştirin:
- Minimum saat eşiğinde veya üzerinde çalışan çalışanları tutmak için özel bir geri çağırma işleviyle
array_filter()kullanın - Filtrelenmiş çalışanların fazla mesai ücretini hesaplamak için özel bir geri çağırma işleviyle
array_map()kullanın (fazla mesai, 40'ın üzerindeki saatlerdir ve normal saatler için saat başına 25 $ ücretin 1,5 katı üzerinden ödenir) - Filtrelenmiş tüm çalışanların toplam fazla mesai ücretini hesaplamak için özel bir geri çağırma işleviyle
array_reduce()kullanın
Sonuçları aşağıdaki biçimde yazdırın:
- Önce, uygun her çalışanın adını ve fazla mesai ücretini ayrı satırlarda
Name: $Amountbiçiminde yazdırın (2 ondalık basamağa yuvarlanmış olarak) - Son olarak, toplam fazla mesai ücretini
Total: $Amountbiçiminde yazdırın (2 ondalık basamağa yuvarlanmış olarak)
Hesaplama ayrıntıları:
- Normal saatler (40 saate kadar): Saat başına 25 $
- Fazla mesai saatleri (40 saatin üzeri): Saat başına 37,50 $ (ücretin 1,5 katı)
- Bir çalışan 40 saat veya daha az çalıştıysa fazla mesai ücreti 0,00 $ olur
Girdi biçimi:
- İlk satır: Virgülle ayrılmış çalışan adları (örnek:
Alice,Bob,Charlie,Diana,Eve) - İkinci satır: Sayı olarak virgülle ayrılmış çalışma saatleri (örnek:
45,32,50,28,40) - Üçüncü satır: Sayı olarak minimum saat eşiği (örnek:
35)
Beklenen çıktı: Her uygun çalışan, fazla mesai ücretiyle birlikte ayrı satırlarda; ardından toplam fazla mesai ücreti yer alır ve tüm tutarlar 2 ondalık basamağa biçimlendirilir
Kendin dene
<?php
// Girdileri oku
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));
// Saatleri tam sayıya dönüştür
$hours = array_map('intval', $hours);
// İsimleri ve saatleri birleştiren ilişkisel dizi oluştur
$employees = array_combine($names, $hours);
// TODO: Kodunuzu aşağıya yazın
// 1. Minimum çalışma saatinde veya üzerinde çalışan personelleri tutmak için array_filter() kullanın
// 2. Filtrelenmiş personeller için fazla mesai ücretini hesaplamak üzere array_map() kullanın
// 3. Toplam fazla mesai ücretini hesaplamak için array_reduce() kullanın
// Sonuçları yazdır
// Her bir kalifiye personelin fazla mesai ücretini yazdır
// Toplam fazla mesai ücretini yazdır
?>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