"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية دمج المصفوفات الترابطية والتعامل مع المفاتيح المفقودة وملء القيم الافتراضية؟

كيفية دمج المصفوفات الترابطية والتعامل مع المفاتيح المفقودة وملء القيم الافتراضية؟

تم النشر بتاريخ 2024-11-02
تصفح:657

How to Merge Associative Arrays, Handle Missing Keys, and Fill with Default Values?

دمج المصفوفات الترابطية المتعددة وإضافة الأعمدة المفقودة بقيمة افتراضية

قد يكون الجمع بين المصفوفات الترابطية مع مجموعات مختلفة من المفاتيح لإنشاء مصفوفة موحدة أمرًا صعبًا. يستكشف هذا السؤال طريقة لتحقيق ذلك، والإخراج المطلوب هو مصفوفة يتم فيها دمج المفاتيح وملء الأعمدة المفقودة بقيمة افتراضية.

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

$keys = array();
foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) {
    $keys[$key] = '';
}

تتكرر هذه الحلقة على جميع العناصر الموجودة في صفائف الإدخال، وتستخرج المفاتيح الفريدة وتعيين قيم فارغة لها. تحتوي مجموعة مفاتيح $ الناتجة على جميع المفاتيح الممكنة التي يمكن أن توجد في المصفوفة المدمجة النهائية.

بعد ذلك، يتم دمج كل مصفوفة إدخال مع مجموعة مفاتيح $:

$data = array();
foreach($d as $values) {
    $data[] = array_merge($keys, $values);
}

تضمن هذه الخطوة أن كل صف في المصفوفة النهائية يحتوي على جميع المفاتيح الممكنة، مع ملء أي قيم مفقودة بسلسلة فارغة. مصفوفة بيانات $ الناتجة هي المصفوفة المدمجة والمكتملة المطلوبة.

بدلاً من ذلك، يمكن إنشاء مصفوفة زوج المفاتيح ودمجها مع كل مصفوفة إدخال:

$keys = array_keys(call_user_func_array('array_merge', $d));
$key_pair = array_combine($keys, array_fill(0, count($keys), null));
$values = array_map(function($e) use ($key_pair) {
    return array_merge($key_pair, $e);
}, $d);

تقوم هذه الطريقة بشكل أساسي بإنشاء خريطة لجميع المفاتيح الممكنة للقيم الخالية. يتم بعد ذلك دمج كل مصفوفة إدخال مع المصفوفة $key_pair، لتحقيق نفس نتيجة الطريقة السابقة.

بيان الافراج أعيد طبع هذه المقالة على: 1729431856 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3