'array_map' مع دالة مخصصة
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 40 من 68.
بينما تعمل الدوال المدمجة مثل strtoupper بشكل جيد مع array_map()، فإن القوة الحقيقية تأتي من استخدام الدوال المخصصة الخاصة بك. يتيح لك ذلك إنشاء تحويلات محددة مصممة خصيصاً لتلبية احتياجاتك الدقيقة.
لاستخدام دالة مخصصة مع array_map()، ما عليك سوى تمرير اسم الدالة كسلسلة نصية (string) للمعامل الأول. يجب أن تقبل دالتك المخصصة معاملاً واحداً (عنصر المصفوفة الحالي) وتعيد القيمة المحولة.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// النتيجة: [2, 4, 6, 8, 10]
?>يمنحك هذا النهج تحكماً كاملاً في كيفية معالجة كل عنصر. يمكنك إجراء عمليات حسابية معقدة، أو معالجة النصوص، أو أي منطق آخر داخل وظيفتك المخصصة، مما يجعل array_map() متعددة الاستخدامات بشكل لا يصدق لمهام تحويل البيانات.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى مدخلين: قائمة من درجات الحرارة بالدرجة المئوية (Celsius) مفصولة بفاصلة، ووحدة مستهدفة للتحويل (إما F للفهرنهايت أو K للكلفن). يحتوي المدخل الأول على درجات الحرارة كسلسلة نصية بتنسيق 0,10,20,30,100، والمدخل الثاني هو حرف واحد يشير إلى نوع التحويل.
اقرأ كلا المدخلين، وقم بتحويل درجات الحرارة المفصولة بفاصلة إلى مصفوفة من الأرقام، وأنشئ دالة مخصصة تقوم بتحويل درجة الحرارة المئوية إلى الوحدة المستهدفة، واستخدم array_map() مع دالتك المخصصة لتحويل جميع درجات الحرارة، واطبع كل درجة حرارة محولة في سطر منفصل، مقربة إلى منزلتين عشريتين.
صيغ التحويل:
- من مئوي إلى فهرنهايت:
(C × 9/5) + 32 - من مئوي إلى كلفن:
C + 273.15
تنسيق المدخلات:
- السطر الأول: درجات حرارة مئوية مفصولة بفاصلة (مثال:
0,10,20,30,100) - السطر الثاني: وحدة التحويل المستهدفة - إما
FأوK(مثال:F)
المخرجات المتوقعة: طباعة كل درجة حرارة محولة في سطر منفصل، مقربة إلى منزلتين عشريتين
ورقة مرجعية
استخدم الدوال المخصصة مع array_map() عن طريق تمرير اسم الدالة كسلسلة نصية. يجب أن تقبل الدالة المخصصة معاملًا واحدًا (عنصر المصفوفة الحالي) وتعيد القيمة المحولة.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// النتيجة: [2, 4, 6, 8, 10]
?>يوفر هذا النهج تحكمًا كاملاً في معالجة العناصر، مما يسمح بإجراء حسابات معقدة، أو معالجة النصوص، أو أي منطق مخصص داخل الدالة الخاصة بك.
جرّب بنفسك
<?php
// قراءة درجات الحرارة المفصولة بفاصلة
$temperatures = fgets(STDIN);
// قراءة الوحدة المستهدفة (F أو K)
$unit = trim(fgets(STDIN));
// تحويل السلسلة النصية المفصولة بفاصلة إلى مصفوفة من الأرقام
$tempArray = explode(',', trim($temperatures));
// TODO: اكتب الكود الخاص بك أدناه
// إنشاء دالة مخصصة لتحويل الدرجة المئوية (Celsius) إلى الوحدة المستهدفة
// استخدم array_map() لتطبيق التحويل على جميع درجات الحرارة
// اطبع كل درجة حرارة محولة في سطر منفصل، مقربة إلى منزلتين عشريتين
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين6دوال المصفوفات من الرتبة العليا
التحويل باستخدام 'array_map''array_map' مع دالة مخصصةالتصفية باستخدام 'array_filter''array_filter' مع دالة مخصصةالاختزال باستخدام 'array_reduce'المرور عبر العناصر باستخدام 'array_walk'ملخص: معالجة البيانات