اشتراک کلید کاربری (array_intersect_ukey)
گاهی فقط کلیدها (Keys) مهم اند، نه مقدارها. اینجا از array_intersect_ukey() کمک می گیریم. «کاربری (User-defined)» یعنی تابع مقایسه کلید را خودت می نویسی.
تعریف و سازوکار
این تابع، کلیدهای چند آرایه را مقایسه می کند و فقط ورودی های مشترک را از array1 برمی گرداند. مقایسه کلیدها با تابعی است که خودت تعریف می کنی.
<?php
// نگارش کلی
// array_intersect_ukey(array1, array2, array3, ..., myfunction)
?>
پارامترها
- array1: آرایه پایه برای خروجی.
- array2,...: آرایه های مرجع برای مقایسه کلید.
- myfunction: تابع مقایسه کلید. باید منفی/صفر/مثبت بدهد.
مثال 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" => "blue", "b" => "black", "e" => "blue");
$result = array_intersect_ukey($a1, $a2, "myfunction");
print_r($result);
?>
مثال 2: سه آرایه با مقایسه کلید کاربری
حالا سه آرایه داریم. فقط کلیدهای مشترک هر سه، در خروجی می مانند.
<?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" => "black", "b" => "yellow", "d" => "brown");
$a3 = array("e" => "purple", "f" => "white", "a" => "gold");
$result = array_intersect_ukey($a1, $a2, $a3, "myfunction");
print_r($result);
?>
گام های عملی سریع
- آرایه پایه را بده. نامش
array1باشد. - آرایه های مقایسه را آماده کن. کلیدها معنی دار باشند.
- تابع مقایسه کلید را بنویس. خروجی اش منفی/صفر/مثبت باشد.
array_intersect_ukey()را صدا بزن. نتیجه را بررسی کن.
نکات و هشدارها
نکته: خروجی فقط از array1 بازگردانده می شود.
نکته: اگر مقدار هم مهم است، به اشتراک انجمنی فکر کن.
هشدار: برای تمرکز بر کلید، از اشتراک کلید کاربری استفاده کن؛ نوع کلید مهم است.
جمع بندی سریع
- مقایسه فقط روی کلیدها انجام می شود.
- تابع کاربری، نحوه سنجش کلید را تعیین می کند.
- خروجی شامل ورودی های مشترک کلیدی است.
- مقدارها در اشتراک نقشی ندارند.