انتقل إلى محتوى الدرس

array_merge vs Plus Union Operator الفرق الدقيق بين دالة array_merge ومعامل الاتحاد +

ادمج واستبدل عناصر المصفوفات بـ array_merge وarray_replace، واربط المفاتيح بالقيم عبر array_combine، واحسب التقاطع والاختلاف.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تدمج كل من الدالة 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
<?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";