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() مثالية عندما تحتاج إلى معالجة البيانات دون فقدان القيم الأصلية.

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)

جرّب بنفسك

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

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

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


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

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

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

جميع دروس Logic & Flow