دمج المصفوفات الترابطية
جزء من قسم المنطق وتدفق التنفيذ في رحلة 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 المدرجة لاحقًا في استدعاء الدالة الأولوية على القيم السابقة. ينطبق سلوك الكتابة فوق هذه فقط على المفاتيح النصية؛ أما المفاتيح الرقمية فدائمًا ما يُعاد فهرستها بالتسلسل، تمامًا كما هو الحال مع المصفوفات المفهرسة.
التحدي
سهلستتلقى مدخلين: مصفوفة 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);
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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'مراجعة: ترتيب لوحة المتصدرينتدرّب بنفسك: مترجم PHP عبر الإنترنت