اذهب إلى المحتوى

السؤال

نشر

لدي مصفوفتين بالشكل التالي:

<?php

$arr1 = array(
 "name" => "emad",
 "email" => "emad@gmail.com"
);

$arr2 = [
	123=> 'emad_saif',
	456=> '18'
];

المصفوفة الأولى لديها مفاتيح نصية string (مثل name و email)، بيمنا المصفوفة الثانية لديها مفاتيح رقمية integers (مثل 123 و 456)

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

$result = array_merge($arr1, $arr2);
print_r($result);

لكن المشكلة تكون في مفاتيح المصفوفة الناتجة من العملية السابقة، حيث تكون المصفوفة بالشكل التالي:

Array
(
    [name] => emad
    [email] => emad@gmail.com
    [0] => emad_saif
    [1] => 18
)

كما هو واضح من الكود السابق، فإن المصفوفتين تم دمجهما ولكن تم تغير مفاتيح المصفوفة الثانية وأصبحت 0 و 1 بدلًا من 123 و 456

كيف أقوم بدمج المصفوفتين معًا بدون تغير مفاتيح المصفوفة الثانية؟ بحيث تكون النتيجة النهائية بالشكل التالي:

Array
(
    [name] => emad
    [email] => emad@gmail.com
    [123] => emad_saif
    [456] => 18
)

 

Recommended Posts

  • 1
نشر

يمكنك أن تستخدم المعامل + لدمج المصفوفتين معًا، على النحو التالي:

<?php

$arr1 = array(
 "name" => "emad",
 "email" => "emad@gmail.com"
);

$arr2 = [
	123=> 'emad_saif',
	456=> '18'
];

print_r($arr1 + $arr2);

وستحصل على النتيجة المطلوبة:

Array
(
    [name] => emad
    [email] => emad@gmail.com
    [123] => emad_saif
    [456] => 18
)

أيضًا يمكنك أن تستخدم الدالة array_replace:

$result = array_replace($arr1, $arr2);
print_r($result);

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

<?php

$arr1 = array(
 "name" => "first name",
 "email" => "emad@gmail.com"
);

$arr2 = [
	"name" => 'another name',
	456=> '18'
];

$result = array_replace($arr1, $arr2);
print_r($result);

print_r($arr1 + $arr2);

في الحالة السابقة، كلا المصفوفتين يحتويان على العنصر name، وعند إستعمال الدالة array_replace سوف يتم إستبدال العنصر name من المصفوفة arr1 بالعنصر name من المصفوفة arr2، وستكون النتيجة بالشكل التالي:

Array
(
    [name] => another name
    [email] => emad@gmail.com
    [456] => 18
)

بينما عند إستعمال المعامل + فسوف يتم إستبدال العنصر name من المصفوفة arr2 بالعنصر name من المصفوفة arr1، وستكون النتيجة بالشكل التالي:

Array
(
    [name] => first name
    [email] => emad@gmail.com
    [456] => 18
)

كما يمكنك جعل المعامل + يتصرف مثل الدالة array_replace من خلال تغير ترتيب المصفوفتين، بالشكل التالي:

print_r($arr2 + $arr1);	// يتم إستبدال المصفوفتين هنا

بهذا الشكل سوف تحصل على نفس النتيجة مثل نتيجة إستعمال الدالة array_replace تمامًا.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...