تفاضل کاربری (array_udiff)
تابع «array_udiff» تفاوتِ آرایه ها را با مقایسه مقدارها برمی گرداند. اما مقایسه را با «تابعِ خودمان» انجام می دهد. یعنی قانون مقایسه را خودت می نویسی.
تعریف و کاربرد
array_udiff مقدارهای دو یا چند آرایه را مقایسه می کند. سپس اعضایی را برمی گرداند که فقط در آرایه اول هستند. مقایسه با یک «تابع کاربری (User-defined function)» انجام می شود.
سینتکس (Syntax)
array_udiff($array1, $array2, $array3, ..., $compareFn);
مثال 1: مقایسه مقدارها با تابع کاربری
این تابع سه خروجی ممکن دارد: 0، 1 یا -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_udiff($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", "yellow");
$a2 = array("A" => "red", "b" => "GREEN", "yellow", "black");
$a3 = array("a" => "green", "b" => "red", "yellow", "black");
$result = array_udiff($a1, $a2, $a3, "myfunction");
print_r($result);
?>
هشدار: مقایسه مثال بالا «حساس به حروف» است؛ GREEN با green برابر نیست.
گام های عملی سریع
- آرایه هایت را بساز.
- تابع مقایسه را بنویس.
- array_udiff را صدا بزن.
لینک های داخلی
برای مرور تفاضل کاربری این صفحه را نگه دار. همچنین ببین array_diff برای تفاضل ساده، و array_udiff_assoc برای تفاضل با کلید.
جمع بندی سریع
- array_udiff تفاوتِ مقدارها را می دهد.
- قانون مقایسه دستِ خودت است.
- خروجی فقط اعضای یکتای آرایه اول است.
- حساسیت به حروف را در نظر بگیر.