تفاضل کاربری انجمنی+کلید (array_udiff_uassoc)
اینجا «تفاضل کاربری انجمنی+کلید» را می بینیم. یعنی کلید و مقدار هر دو مقایسه می شوند. برای کلید یک تابع کاربری داریم؛ برای مقدار هم یک تابع کاربری. «تابع کاربری (User-defined Function)» تابعی است که خودت می نویسی.
تعریف و کاربرد تفاضل کاربری انجمنی+کلید
array_udiff_uassoc کلیدها و مقدارهای چند آرایه را می سنجد. سپس اعضای یکتای آرایه اول را برمی گرداند. هر دو مقایسه با توابع کاربری انجام می شوند.
سینتکس (Syntax)
array_udiff_uassoc($array1, $array2, $array3, ..., $compareValueFn, $compareKeyFn);
مثال: مقایسه با دو تابع کاربری
هر تابع مقایسه باید عدد برگرداند: 0 یعنی برابر، 1 بزرگ تر، -1 کوچک تر.
<?php
function myfunction_key($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
}
function myfunction_value($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", "c" => "green");
$result = array_udiff_uassoc($a1, $a2, "myfunction_value", "myfunction_key");
print_r($result);
?>
نکته: حواست به نوع ها باشد. چون از === استفاده کردیم، نوع و مقدار همزمان سنجیده می شود.
گام های عملی
- آرایه های ورودی را آماده کن.
- تابع مقایسه مقدار را بساز.
- تابع مقایسه کلید را بساز.
- array_udiff_uassoc را اجرا کن.
لینک های داخلی مرتبط
ببین: تفاضل کاربری، تفاضل کاربری انجمنی، و اشتراک کاربری انجمنی+کلید.
جمع بندی سریع
- دو تابع کاربری لازم است.
- کلید و مقدار هر دو سنجیده می شوند.
- خروجی، اقلام یکتای آرایه اول است.
- برگشتی تابع: -1، 0، یا 1.