Menu
CoddyTech
flag Ar iconالعربيةdown icon

'array_filter' مع دالة مخصصة

جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 42 من 68.

بينما تقوم array_filter() بدون دالة استدعاء (callback) بإزالة القيم الفارغة، فإن قوتها الحقيقية تظهر عندما توفر دالة استدعاء مخصصة. يتيح لك هذا تحديد العناصر التي يجب الاحتفاظ بها بالضبط بناءً على معاييرك الخاصة.

لاستخدام دالة مخصصة مع array_filter()، قم بتمرير اسم الدالة كمعامل ثانٍ. يجب أن تقبل دالة الاستدعاء (callback function) الخاصة بك معاملاً واحداً (عنصر المصفوفة الحالي) وتعيد true للاحتفاظ بالعنصر أو false لاستبعاده.

<?php
function isEven($number) {
    return $number % 2 === 0;
}

$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$evenNumbers = array_filter($numbers, "isEven");
// النتيجة: [2, 4, 6, 8]
?>

في هذا المثال، تقوم الدالة isEven باختبار كل رقم باستخدام معامل باقي القسمة (modulo). فقط الأرقام التي تُرجع true (الأرقام الزوجية) يتم تضمينها في النتيجة المصفاة. يمنحك هذا النهج تحكماً كاملاً في منطق التصفية، مما يجعل array_filter() متعددة الاستخدامات بشكل كبير لمهام معالجة البيانات.

challenge icon

التحدي

سهل

ستتلقى مدخلين: قائمة بأسعار المنتجات مفصولة بفاصلة، والحد الأدنى للسعر. يحتوي المدخل الأول على الأسعار كسلسلة نصية بتنسيق 15.99,45.00,8.50,120.00,22.75، والمدخل الثاني هو الحد الأدنى للسعر كرقم (مثال: 20).

اقرأ كلا المدخلين، وقم بتحويل الأسعار المفصولة بفاصلة إلى مصفوفة من الأرقام، وأنشئ دالة استدعاء (callback function) مخصصة تتحقق مما إذا كان السعر أكبر من أو يساوي الحد الأدنى، واستخدم array_filter() مع دالتك المخصصة للاحتفاظ فقط بالأسعار التي تستوفي الحد الأدنى، واطبع كل سعر تمت تصفيته في سطر منفصل بنفس ترتيب ظهورها.

يجب أن تقبل دالة الاستدعاء المخصصة معاملًا واحدًا (السعر) وتعيد true إذا كان السعر أكبر من أو يساوي الحد الأدنى، أو false خلاف ذلك.

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

  • السطر الأول: أسعار المنتجات مفصولة بفاصلة (مثال: 15.99,45.00,8.50,120.00,22.75)
  • السطر الثاني: الحد الأدنى للسعر كرقم (مثال: 20)

المخرجات المتوقعة: طباعة كل سعر يستوفي الحد الأدنى أو يتجاوزه في سطر منفصل، مع الحفاظ على الترتيب الأصلي.

جرّب بنفسك

<?php
// قراءة المدخلات
$prices_input = trim(fgets(STDIN));
$threshold = floatval(fgets(STDIN));

// تحويل الأسعار المفصولة بفاصلة إلى مصفوفة
$prices = array_map('floatval', explode(',', $prices_input));

// TODO: اكتب الكود الخاص بك أدناه
// قم بإنشاء دالة callback مخصصة تتحقق مما إذا كان السعر >= threshold
// استخدم array_filter() مع دالتك المخصصة
// اطبع كل سعر تمت تصفيته في سطر منفصل

?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم PHP عبر الإنترنت