Hàm array_intersect_uassoc() của PHP
Mô hình
So sánh tên khóa và giá trị khóa của hai mảng (sử dụng hàm tùy chỉnh để so sánh tên khóa) và trả về giao:
<?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); ?>
Định nghĩa và cách sử dụng
hàm array_intersect_uassoc() được sử dụng để so sánh tên khóa và giá trị khóa của hai (hoặc nhiều) mảng và trả về giao.
Ghi chú:hàm này sử dụng hàm tùy chỉnh để so sánh tên khóa!
hàm này so sánh tên khóa và giá trị khóa của hai (hoặc nhiều) mảng và trả về mảng giao, mảng này bao gồm tất cả các giá trị trong các mảng được so sánh (array1v.v.) và trong bất kỳ mảng tham số khác (array2 hoặc array3 v.v.) của tên khóa và giá trị khóa.
Giải thích
hàm array_intersect_uassoc() sử dụng hàm hồi quy tùy chỉnh của người dùng để tính giao của mảng, sử dụng hồi quy để so sánh chỉ số.
array_intersect_uassoc() trả về một mảng chứa tất cả các giá trị array1 cũng xuất hiện trong tất cả các mảng tham số khác. Các tên khóa trong mảng trả về giữ nguyên.
Lưu ý, khác với array_intersect(), ngoài việc so sánh giá trị khóa, còn phải so sánh tên khóa.
so sánh này được thực hiện thông qua hàm hồi quy do người dùng cung cấp. Hàm này có hai tham số, đó là tên khóa cần so sánh. Nếu tham số đầu tiên nhỏ hơn tham số thứ hai, hàm phải trả về một giá trị âm, nếu hai tham số bằng nhau, hàm phải trả về 0, nếu tham số đầu tiên lớn hơn tham số thứ hai, hàm phải trả về một giá trị dương.
cú pháp
array_intersect_uassoc(array1,array2,array3,...myfunction)
Tham số | Mô tả |
---|---|
array1 | Bắt buộc. Mảng đầu tiên so sánh với các mảng khác. |
array2 | Bắt buộc. Các mảng so sánh với mảng đầu tiên. |
array3,... | Tùy chọn. Các mảng khác so sánh với mảng đầu tiên. |
myfunction | Bắt buộc. Định nghĩa chuỗi có thể gọi hàm so sánh. Nếu tham số đầu tiên nhỏ hơn, bằng hoặc lớn hơn tham số thứ hai, hàm so sánh phải trả về số nguyên nhỏ hơn, bằng hoặc lớn hơn 0. |
Chi tiết kỹ thuật
Trả về giá trị: | Trả về mảng giao điểm, mảng này bao gồm tất cả các phần tử trong các mảng được so sánh (array1v.v.) và trong bất kỳ mảng tham số khác (array2 hoặc array3 v.v.) của tên khóa và giá trị khóa. |
Phiên bản PHP: | 5+ |
Thêm ví dụ
Ví dụ 1
So sánh tên khóa và giá trị khóa của ba mảng (sử dụng hàm so sánh tùy chỉnh của người dùng cho tên khóa) và trả về giao điểm:
<?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); ?>