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

كيفية دمج مصفوفتين معًا بدون تغير أسماء المفاتيح keys في كل مصفوفة في PHP؟

Emad Saif

السؤال

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

<?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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...