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

'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() متعددة الاستخدامات بشكل لا يُصدق لمهام تحويل البيانات.

challenge icon

التحدي

سهل

ستتلقى مدخلين: قائمة 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() لتطبيق التحويل على جميع درجات الحرارة
// اطبع كل درجة حرارة محوّلة في سطر منفصل، مقربة إلى منزلتين عشريتين

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

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

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

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