تابع 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); ?>