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

دمج المصفوفات الترابطية

جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 15 من 68.

بينما تعمل array_merge() بسلاسة مع المصفوفات المفهرسة، فإن سلوكها يتغير بشكل ملحوظ عند العمل مع المصفوفات الترابطية. والفرق الرئيسي هو كيفية تعاملها مع مفاتيح السلاسل النصية المكررة بين الـ arrays التي يتم دمجها.

عند دمج المصفوفات الترابطية، إذا كانت كلتا المصفوفتين تحتويان على المفتاح النصي نفسه، فستستبدل القيمة من المصفوفة اللاحقة القيمةَ من المصفوفة السابقة:

<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Outputs: Array ( [theme] => dark [language] => english [notifications] => false )
?>

لاحظ كيف تغيّر "theme" من "light" إلى "dark"، وتغيّر "notifications" من true إلى false، بينما ظلّ "language" هو "english" لأنه لم تتم إعادة تعريفه. هذا السلوك يجعل array_merge() مثاليًا لأنظمة configuration التي تريد فيها أن تتجاوز تفضيلات المستخدم القيم الافتراضية.

ترتيب المعاملات مهم: تأخذ القيم من arrays المدرجة لاحقًا في استدعاء الدالة الأولوية على القيم السابقة. ينطبق سلوك الكتابة فوق هذه فقط على المفاتيح النصية؛ أما المفاتيح الرقمية فدائمًا ما يُعاد فهرستها بالتسلسل، تمامًا كما هو الحال مع المصفوفات المفهرسة.

challenge icon

التحدي

سهل

ستتلقى مدخلين: مصفوفة configuration افتراضية ومصفوفة تفضيلات المستخدم، وكلتاهما بتنسيق JSON. اقرأ كلا المدخلين، وحوّل كل سلسلة JSON إلى مصفوفة associative، واستخدم array_merge() لدمجهما (بحيث تتجاوز تفضيلات المستخدم القيم الافتراضية)، واطبع configuration المدمجة باستخدام print_r().

تنسيق الإدخال: سطران - يحتوي كل سطر على كائن JSON يمثّل مصفوفة associative (مثال: {"theme":"light","language":"english"})

الناتج المتوقع: مصفوفة configuration المدمجة، حيث تتجاوز تفضيلات المستخدم القيم الافتراضية، مع عرضها باستخدام print_r()

جرّب بنفسك

<?php
// اقرأ مدخلات JSON الاثنين
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);

// حوّل سلاسل JSON إلى مصفوفات ترابطية
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);

// TODO: اكتب الكود الخاص بك أدناه لدمج المصفوفات


// أخرج التكوين المدمج
print_r($mergedConfig);
?>
quiz iconاختبر نفسك

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

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

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