شرح صفوف ومحتوى الفقرة
تدمج كل من الدالة array_merge($a, $b) ومعامل اتحاد المصفوفات $a + $b المصفوفات معاً، لكنهما يعالجان تصادم المفاتيح المتكررة بطريقتين متعاكستين.
- في
array_merge($a, $b)، تطغى المفاتيح النصية اللاحقة على السابقة ($bتفوز)، بينما لا تُستبدل المفاتيح الرقمية بل تُلحق في النهاية ويُعاد ترقيمها من0. - في معامل الاتحاد
$a + $b، تفوز المصفوفة الأولى على اليسار ($a) دائماً في المفاتيح النصية والرقمية معاً، وتُضاف مفاتيح$bغير الموجودة فقط. - يعمل معامل التفكيك
[...$a, ...$b]بنفس سلوكarray_merge($a, $b)تماماً.
ألحقت array_merge() المفتاح الرقمي 0 كعنصر رابع، بينما احتفظ الاتحاد $override + $defaults بقيمة $override[0] وتجاهل $defaults[0].
PHP
<?php
$defaults = ["env" => "prod", "debug" => false, 0 => "read"];
$override = ["debug" => true, 0 => "write"];
$merged = array_merge($defaults, $override);
$union = $override + $defaults;
echo "Merge debug: " . ($merged["debug"] ? "true" : "false") . ", count: " . count($merged) . "\n";
echo "Union debug: " . ($union["debug"] ? "true" : "false") . ", count: " . count($union) . "\n";