ایجاد: ۷:۵۹ ۱۳۹۱/۸/۱۶
ویرایش: ۱۰:۰۷ ۱۳۹۴/۲/۶

یادداشت‌ها

»

طرز تلفیق و ادغام آرایه ها در PHP

زبان PHP برای کار با آرایه‌ها بیش از 70 تابع را در فراهم آورده است که کار با آرایه‌ها را بسیار ساده کرده است.
یکی از کاربردهای موردنیاز، ترکیب دو آرایه است. یعنی ما دو آرایه داریم که می‌خواهیم آن را به آرایه‌ی واحدی تبدیل کنیم.
خب اگر عنصر مشترکی در دو آرایه نباشد و اندیس عددی عناصر آرایه هم برای شما مهم نباشد، می‌توانید با استفاده از تابع array_merge یا حتی عملگر ساده‌ی + این کار را انجام دهید در غیر اینصورت باید مراقب باشید چون نه فقط هر یک از 2 روش مذکور، بلکه حتی ترتیب نوشتن آرایه‌هایی که قرار است ادغام شوند، در آرایه‌ی نتیجه موثر خواهد بود.
برای فهم بهتر توضیحات زیر، می‌توانید مثال زیر را در نظر بگیرید:
$A = array(1, 'site'=>'google.com', 2=>3);
$B = array('site'=>'9px.ir', 4, 5=>6);
$C = $A + $B;
$D = $B + $A;
$E = array_merge($A, $B);
$F = array_merge($B, $A);
//var_dump($A, $B, $C, $D, $E, $F);
echo 'A: ';print_r($A);
echo 'B: ';print_r($B);
echo 'A+B: ';print_r($C);
echo 'B+A: ';print_r($D);
echo 'array_merge(A, B): ';print_r($E);
echo 'array_merge(B, A): ';print_r($F);
نتیجه اجرای این کد به صورت زیر است:
A: Array
(
    [0] => 1
    [site] => google.com
    [2] => 3
)
B: Array
(
    [site] => 9px.ir
    [0] => 4
    [5] => 6
)
A+B: Array
(
    [0] => 1
    [site] => google.com
    [2] => 3
    [5] => 6
)
B+A: Array
(
    [site] => 9px.ir
    [0] => 4
    [5] => 6
    [2] => 3
)
array_merge(A, B): Array
(
    [0] => 1
    [site] => 9px.ir
    [1] => 3
    [2] => 4
    [3] => 6
)
array_merge(B, A): Array
(
    [site] => google.com
    [0] => 4
    [1] => 6
    [2] => 1
    [3] => 3
)

استفاده از اپراتور +

زمانی از عملگر + استفاده کنید که اندیس عددی برای‌تان مهم باشد. این تابع به اندیس عددی اهمیت می‌دهد و آن را حفظ می‌کند. آرایه اولی (دست چپ) محکم سرجایش می‌ایستد (عینا در خروجی ظاهر می‌شود) و اگر در آرایه دوم اندیسی وجود داشت که در آرایه اولی نیست، آنگاه آن اندیس به همراه مقدارش را به آرایه نتیجه اضافه می‌شود.

استفاده از تابع array_merge

تابع array_merge دو تفاوت مهم با اپراتور + دارد:
  1. تابع array_merge اهمیتی به اندیس عددی نمی‌دهد و از همان اول آن را نادیده می‌گیرد در حالی که اپراتور + بر اساس اندیس عددی عمل می‌کرد.
  2. تابع array_merge به آرایه دوم بهای بیشتری می‌دهد و حتما آن را به خروجی الحاق می‌کند. لذا اگر در یک ایندکس رشته‌ای، در هر دو آرایه مقداری داشته باشیم، مقدار عنصر آرایه دوم، در خروجی ظاهر خواهد شد.
تابع array_merge_recursive شبیه اپراتور + است اما عملکردش یک تفاوت مهم دارد. این تابع زمانی که به اندیس عددی برسد، عملکردش مانند تابع array_merge است یعنی آن را حذف و صرفا حسب مقدار یک عنصر، آن را به آرایه خروجی اضافه می‌کند. زمانی که به اندیس رشته‌ای برخورد کند، اگر در دو آرایه تکرار نشده باشد که باز هم مثل تابع قبلی آن را به خروجی منتقل می‌کند اما اگر به اندیس رشته‌ای تکراری برخورد کرد، بجای حذف اولی، عنصری تشکیل می‌دهد که اندیس آن همان رشته تکراری اما مقدار آن، آرایه‌ای متشکل از مقادیر تکراری آن است. (مثال)
نکته: هر سه روش فوق، پذیرای بیش از دو آرایه هم هستند مثلا:
$A = array(...);
$B = array(...);
$C = array(...);
$D = $A + $B + $C;
$E = array_merge($A, $B, $C);
$E = array_merge_recursive($A, $B, $C);
البته در اینگونه موارد باید دقت بیشتری شود تا نتیجه خروجی همان نتیجه مطلوب باشد.

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

رمز یکبارمصرف

... لیست تمام یادداشت‌ها

تبلیغات

ربات‌های تلگرامی:
مجموعه ربات‌های تلگرامی ما برای ساده‌تر کردن کار با تلگرام و مدیریت کانال
دامنه‌های فروشی:
دامنه‌های زیر مربوط به ما یا مشتریان ماست که قابل واگذاری هستند. در صورت تمایل به داشتن یکی از آنها، با این اکانت تلگرامی مکاتبه نمایید.

دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
AnyDesk.ir, Firebase.ir, Angularjs.ir, 9px.ir alAdmin.ir, iQore.ir notion.ir, 3dn.ir,

دامنه‌هایی که می‌تواند مصرف فرهنگی/مذهبی داشته باشد:
mavaez.ir, 2aha.ir, babolelm.ir, mahjoor.ir

دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد:
azizami.ir, 90blog.ir