يمكن لكل من عامل التشغيل "+" وray_merge():array array_merge (array array1, array array2 [, array ...]) دمج صفائف متعددة، ولكن هناك اختلاف بسيط في عملية الاستخدام.
تم وصف array_merge في الدليل المرجعي على النحو التالي:
تقوم الدالة array_merge() بدمج خلايا صفيفين أو أكثر، مع إلحاق القيم الموجودة في صفيف واحد بالمصفوفة السابقة. إرجاع المصفوفة الناتجة.
إذا كان لصفيف الإدخال نفس اسم مفتاح السلسلة، فستحل القيمة بعد اسم المفتاح محل القيمة السابقة. ومع ذلك، إذا كان المصفوفة تحتوي على مفاتيح رقمية، فلن تحل القيم اللاحقة محل القيم الأصلية ولكن سيتم إلحاقها بها.
الفرق بين الاثنين هو:
1. عندما يكون اسم مفتاح المصفوفة هو اسم مفتاح رقمي، وهناك مفاتيح رقمية بنفس الاسم في الصفيفين المراد دمجهما، فإن استخدام array_merge() لن يحل محل القيمة الأصلية، أثناء استخدام "+" لدمج المصفوفات سيتم استبدال القيمة الأولى كنتيجة نهائية، ويتم "التجاهل" تلك القيم الموجودة في المصفوفات اللاحقة التي تحمل نفس اسم المفتاح (ملاحظة: لا تتم الكتابة فوقها، بل تحتفظ بالقيمة التي تظهر أولاً). مثال:
$array1 = array(1=>'0');
$array2 = array(1=> "data");
$result1 = $array2 + $array1;/*النتيجة هي قيمة $array2*/
print_r(نتيجة $);
$result = $array1 + $array2 ;/*النتيجة هي قيمة $array1*/
print_r(نتيجة $);
$result3 = array_merge($array2,$array1);/*النتيجة هي قيمة $array2 و$array1، ويتم إعادة تعيين اسم المفتاح*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*النتيجة هي قيمة $array1 و$array2، ويتم إعادة تعيين اسم المفتاح*/
print_r($result4);
نتيجة الإخراج هي:
المصفوفة ( [1] => البيانات )
المصفوفة ( [1] => 0 )
صفيف (
[0] => بيانات
[1] => 0
)
صفيف
(
[0] => 0
[1] => بيانات
)
2. عندما يكون نفس اسم مفتاح الصفيف حرفًا، يكون عامل التشغيل "+" هو نفسه عندما يكون اسم المفتاح رقمًا، ولكن array_merge() ستحل محل القيمة السابقة لنفس اسم المفتاح.
مثال:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "data");
$result1 = $array2 + $array1;/*النتيجة هي قيمة $array2*/
print_r(نتيجة $);
$result = $array1 + $array2 ;/*النتيجة هي قيمة $array1*/
print_r(نتيجة $);
$result3 = array_merge($array2,$array1);/*النتيجة هي $array1*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*النتيجة هي $array2*/
print_r($result4);
نتيجة الإخراج هي:
صفيف ([asd] => البيانات)
صفيف ( [asd] => 0 )
صفيف ( [asd] => 0 )
المصفوفة ( [asd] => البيانات )