'array_map' مع دالة مخصصة
جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 40 من 68.
بينما تعمل الدوال المضمّنة مثل strtoupper بشكل جيد مع array_map()، تكمن القوة الحقيقية في استخدام دوالك المخصّصة. يتيح لك ذلك إنشاء تحويلات محددة مصمّمة لتلبية احتياجاتك الدقيقة.
لاستخدام دالة custom مع array_map()، ما عليك سوى تمرير اسم الدالة كسلسلة نصية للمعامل الأول. يجب أن تقبل دالة custom الخاصة بك معاملًا واحدًا (عنصر المصفوفة الحالي) وتُرجع القيمة المحوَّلة.
<?php
function doubleNumber($num) {
return $num * 2;
}
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// النتيجة: [2, 4, 6, 8, 10]
?>يمنحك هذا الأسلوب تحكمًا كاملًا في كيفية معالجة كل عنصر. يمكنك إجراء حسابات معقدة، أو عمليات معالجة على string، أو أي منطق آخر ضمن function المخصصة بك، مما يجعل array_map() متعددة الاستخدامات بشكل لا يُصدق لمهام تحويل البيانات.
التحدي
سهلستتلقى مدخلين: قائمة temperatures مفصولة بـ comma بوحدة Celsius ووحدة target لـ conversion (إما F لـ Fahrenheit أو K لـ Kelvin). يحتوي المدخل الأول على temperatures في صورة string بالتنسيق 0,10,20,30,100، والمدخل الثاني هو محرف واحد يشير إلى نوع conversion.
اقرأ كلا المدخلين، وحوّل temperatures المفصولة بـ comma إلى array من numbers، وأنشئ دالة custom تحوّل temperature بوحدة Celsius إلى وحدة target، واستخدم array_map() مع دالتك custom لتحويل all temperatures، ثم اطبع كل temperature converted في line separate، مع تقريبها إلى منزلتين عشريتين.
صيغ conversion:
- من Celsius إلى Fahrenheit:
(C × 9/5) + 32 - من Celsius إلى Kelvin:
C + 273.15
تنسيق الإدخال:
- السطر الأول: temperatures بوحدة Celsius مفصولة بـ comma (مثال:
0,10,20,30,100) - السطر الثاني: unit الخاصة بـ conversion target - إما
FأوK(مثال:F)
المخرجات المتوقعة: طباعة كل temperature converted في line separate، مع تقريبها إلى منزلتين عشريتين
جرّب بنفسك
<?php
// اقرأ درجات الحرارة المفصولة بفواصل
$temperatures = fgets(STDIN);
// اقرأ الوحدة المستهدفة (F أو K)
$unit = trim(fgets(STDIN));
// حوّل السلسلة المفصولة بفواصل إلى مصفوفة من الأرقام
$tempArray = explode(',', trim($temperatures));
// TODO: اكتب الكود الخاص بك أدناه
// أنشئ دالة مخصصة لتحويل درجة مئوية إلى الوحدة المستهدفة
// استخدم array_map() لتطبيق التحويل على جميع درجات الحرارة
// اطبع كل درجة حرارة محوّلة في سطر منفصل، مقربة إلى منزلتين عشريتين
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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'ملخص: معالجة البياناتتدرّب بنفسك: مترجم PHP عبر الإنترنت