Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص: معالجة البيانات

جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 45 من 68.

challenge icon

التحدي

سهل

ستتلقى ثلاثة مدخلات: قائمة بأسماء الموظفين مفصولة بفاصلة، وقائمة بساعات عملهم المقابلة للأسبوع مفصولة بفاصلة، والحد الأدنى لساعات العمل. يحتوي المدخل الأول على الأسماء بتنسيق Alice,Bob,Charlie,Diana,Eve، ويحتوي المدخل الثاني على الساعات كأرقام بتنسيق 45,32,50,28,40، والمدخل الثالث هو الحد الأدنى لساعات العمل كرقم (مثال: 35).

اقرأ المدخلات الثلاثة وقم بتحويلها إلى مصفوفات مناسبة. أنشئ مصفوفة ترابطية (associative array) مدمجة حيث تكون أسماء الموظفين هي المفاتيح وساعات عملهم هي القيم. ثم قم بإجراء العمليات التالية باستخدام دوال المصفوفات عالية الرتبة (higher-order array functions):

  1. استخدم array_filter() مع دالة استدعاء (callback function) مخصصة للاحتفاظ فقط بالموظفين الذين عملوا عند الحد الأدنى لساعات العمل أو أعلى منه.
  2. استخدم array_map() مع دالة استدعاء مخصصة لحساب أجر العمل الإضافي للموظفين الذين تم تصفيتهم (العمل الإضافي هو أي ساعات تزيد عن 40 ساعة، وتُدفع بمعدل 1.5 ضعف معدل 25 دولاراً للساعة للساعات العادية).
  3. استخدم array_reduce() مع دالة استدعاء مخصصة لحساب إجمالي أجر العمل الإضافي لجميع الموظفين الذين تم تصفيتهم.

اطبع النتائج بالتنسيق التالي:

  • أولاً، اطبع اسم كل موظف مؤهل وأجر العمل الإضافي الخاص به في أسطر منفصلة بتنسيق Name: $Amount (مقرباً إلى منزلتين عشريتين).
  • أخيراً، اطبع إجمالي أجر العمل الإضافي بتنسيق Total: $Amount (مقرباً إلى منزلتين عشريتين).

تفاصيل الحساب:

  • الساعات العادية (حتى 40 ساعة): 25 دولاراً للساعة.
  • ساعات العمل الإضافي (أكثر من 40 ساعة): 37.50 دولاراً للساعة (بمعدل 1.5 ضعف).
  • إذا عمل الموظف 40 ساعة أو أقل، فإن أجر العمل الإضافي الخاص به هو 0.00 دولار.

تنسيق المدخلات:

  • السطر الأول: أسماء الموظفين مفصولة بفاصلة (مثال: Alice,Bob,Charlie,Diana,Eve).
  • السطر الثاني: ساعات العمل مفصولة بفاصلة كأرقام (مثال: 45,32,50,28,40).
  • السطر الثالث: الحد الأدنى لساعات العمل كرقم (مثال: 35).

المخرجات المتوقعة: كل موظف مؤهل مع أجر العمل الإضافي الخاص به في أسطر منفصلة، يليه إجمالي أجر العمل الإضافي، مع تنسيق جميع المبالغ إلى منزلتين عشريتين.

جرّب بنفسك

<?php
// قراءة المدخلات
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));

// تحويل الساعات إلى أعداد صحيحة
$hours = array_map('intval', $hours);

// إنشاء مصفوفة ترابطية تجمع بين الأسماء والساعات
$employees = array_combine($names, $hours);

// TODO: اكتب الكود الخاص بك أدناه
// 1. استخدم array_filter() للاحتفاظ بالموظفين الذين عملوا لساعات تساوي أو تزيد عن الحد الأدنى
// 2. استخدم array_map() لحساب أجر العمل الإضافي للموظفين الذين تم تصفيتهم
// 3. استخدم array_reduce() لحساب إجمالي أجر العمل الإضافي

// طباعة النتائج
// طباعة أجر العمل الإضافي لكل موظف مؤهل
// طباعة إجمالي أجر العمل الإضافي

?>

جميع دروس Logic & Flow