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

التحويل باستخدام 'array_map'

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

تُعد دالة array_map() أداة قوية تقوم بتحويل كل عنصر في مصفوفة عبر تطبيق دالة استدعاء (callback function) على كل عنصر منها. وعلى عكس الدوال التي تعدل المصفوفة الأصلية، تقوم array_map() بإنشاء وإرجاع مصفوفة جديدة تماماً تحتوي على القيم المحولة.

تتطلب الصيغة الأساسية معاملين: أولاً، دالة الاستدعاء (callback function) التي تريد تطبيقها، وثانياً، المصفوفة التي تريد تحويلها. تمتلك لغة PHP العديد من الدوال المدمجة التي تعمل بشكل مثالي كدوال استدعاء مع array_map().

<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// النتيجة: ["ALICE", "BOB", "CHARLIE"]
?>

في هذا المثال، يتم تطبيق strtoupper على كل عنصر في مصفوفة $names. تظل المصفوفة الأصلية دون تغيير، بينما يحتوي $uppercaseNames على النتائج المحولة. وهذا يجعل array_map() مثالية عندما تحتاج إلى معالجة البيانات دون فقدان القيم الأصلية.

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

challenge icon

التحدي

سهل

ستتلقى مدخلين: قائمة بأسعار المنتجات مفصولة بفاصلة، ونسبة الخصم. يحتوي المدخل الأول على الأسعار كسلسلة نصية بتنسيق 19.99,25.50,12.75,8.00، والمدخل الثاني هو نسبة الخصم كرقم (مثال: 15).

اقرأ كلا المدخلين، وقم بتحويل الأسعار المفصولة بفاصلة إلى مصفوفة من الأرقام، ثم طبق نسبة الخصم على كل سعر باستخدام array_map() مع دالة floatval المدمجة للتحويل وعملية حسابية للخصم، واطبع كل سعر بعد الخصم في سطر منفصل، مقرباً إلى منزلتين عشريتين.

لحساب السعر بعد الخصم: اضرب السعر الأصلي في (100 - discount) / 100.

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

  • السطر الأول: أسعار المنتجات مفصولة بفاصلة (مثال: 19.99,25.50,12.75,8.00)
  • السطر الثاني: نسبة الخصم كرقم (مثال: 15)

المخرجات المتوقعة: طباعة كل سعر بعد الخصم في سطر منفصل، مقرباً إلى منزلتين عشريتين (مثال: 16.99، 21.68، 10.84، 6.80)

ورقة مرجعية

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

الصيغة الأساسية مع دالة مدمجة:

<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// النتيجة: ["ALICE", "BOB", "CHARLIE"]
?>

تأخذ الدالة معاملين: دالة الاستدعاء والمصفوفة المراد تحويلها. يمكنك استخدام دوال PHP المدمجة أو الدوال المجهولة (anonymous functions) كدوال استدعاء.

جرّب بنفسك

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

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

// TODO: اكتب الكود الخاص بك أدناه
// استخدم array_map() لتطبيق الخصم على كل سعر


// عرض كل سعر بعد الخصم في سطر منفصل

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

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

جميع دروس Logic & Flow