تابع array_intersect_uassoc() در PHP

مثال

مقایسه کلید و مقادیر دو آرایه (با استفاده از تابع کاربر برای مقایسه نام‌های کلید) و بازگرداندن تقاطع:

<?php
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("d"=>"red","b"=>"green","e"=>"blue");
$result=array_intersect_uassoc($a1,$a2,"myfunction");
print_r($result);
?>

اجرای نمونه

تعریف و استفاده

تابع array_intersect_uassoc() برای مقایسه کلید و مقادیر دو (یا بیشتر) آرایه و بازگرداندن تقاطع استفاده می‌شود.

نکته:این تابع از تابع کاربر برای مقایسه نام‌های کلید استفاده می‌کند!

این تابع مقایسه بین دو (یا بیشتر) آرایه‌های کلید و مقادیر انجام می‌دهد و آرایه تقاطع را بازمی‌گرداند که شامل همه مقادیر موجود در آرایه‌های مقایسه شده است.array1در عین حال در هر آرایه‌ای که شامل پارامترهای دیگر است (array2 یا array3 و غیره) نام‌های کلید و مقادیر.

توضیحات

تابع array_intersect_uassoc() از تابع بازگشتی کاربر برای محاسبه تقاطع آرایه‌ها استفاده می‌کند و با استفاده از تابع بازگشتی مقایسه‌های شاخص را انجام می‌دهد.

array_intersect_uassoc() یک آرایه بازمی‌گرداند که شامل همه مقادیر موجود در array1 همچنین در همه آرایه‌های پارامترهای دیگر نیز وجود دارد. آرایه‌ای که بازگردانده می‌شود شامل مقادیر موجود در همه آرایه‌های مقایسه شده است و نام‌های کلیدها بدون تغییر باقی می‌مانند.

توجه داشته باشید که برخلاف array_intersect()، علاوه بر مقایسه مقادیر کلید، باید نام‌های کلید نیز مقایسه شوند.

این مقایسه از طریق تابع بازگشتی که توسط کاربر ارائه شده انجام می‌شود. این تابع دو پارامتر دارد، نام کلیدهایی که باید مقایسه شوند. اگر پارامتر اول کمتر از پارامتر دوم باشد، تابع باید یک عدد منفی بازگرداند، اگر دو پارامتر برابر باشند، باید 0 بازگرداند و اگر پارامتر اول بزرگتر از پارامتر دوم باشد، باید یک عدد مثبت بازگرداند.

مقارنة

array_intersect_uassoc(array1,array2,array3,...myfunction)
پارامترها توضیح
array1 ضروری. آرایه‌ای که با دیگر آرایه‌ها مقایسه می‌شود.
array2 ضروری. آرایه‌ای که با اولین آرایه مقایسه می‌شود.
array3,... اختیاری. آرایه‌هایی که با اولین آرایه مقایسه می‌شوند.
myfunction ضروری. رشته‌ای که تعریف می‌کند که کدام فنکشن قابل فراخوانی است. اگر اولین پارامتر کمتر از، برابر با یا بیشتر از دومین پارامتر است، فنکشن مقایسه باید عدد صحیح کمتر از، برابر با یا بیشتر از 0 را بازگرداند.

جزئیات فنی

نتیجه: آرایه‌ای که شامل تقاطع از تمام آرایه‌هایی که مقایسه می‌شوند است و شامل:array1در عین حال در هر آرایه‌ای که شامل پارامترهای دیگر است (array2 یا array3 و غیره) نام‌های کلید و مقادیر.
نسخه PHP: 5+

مثال‌های بیشتر

مثال 1

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

<?php
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","d"=>"blue");
$a3=array("e"=>"yellow","a"=>"red","d"=>"blue");
$result=array_intersect_uassoc($a1,$a2,$a3,"myfunction");
print_r($result);
?>

اجرای نمونه