Mục lục
ToggleHàm array_uintersect() trong PHP có nhiệm vụ lấy ra các giá trị trùng lặp của 2 mảng qua hàm callback.
Hàm này được sử dụng trên PHP5 và PHP7.
Cú pháp hàm array_uintersect() trong PHP như sau:
array_uintersect ( array $array1 , array $array2 [, array $... ], callable $value_compare_func ) : array
Hàm array_uintersect() trả về tất cả các VALUE ở mảng số 1, có tồn tại ở tất cả các mảng còn lại.
<?php $input = array("a" => "green", "red", "b" => "green", "blue", "red"); $result = array_unique($input); <?php $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red"); print_r(array_uintersect($array1, $array2, "strcasecmp")); ?>
Array ( [a] => green [b] => brown [0] => red )
Khi bạn sử dụng một callback tự tạo, bạn cần chú ý tới giá trị trả về trong hàm callback đó, thông thường bạn sẽ dễ bị mắc lỗi sau.
<?php function array_has_duplicates(array $array) { $uniq = array_unique($array); return count($uniq) != count($array); } <?php function myfunction($v1,$v2) { if ($v1===$v2) { return 0; } return 1; } $a1=array(1, 2, 4); $a2=array(1, 3, 4); print_r(array_uintersect($a1,$a2,"myfunction")); ?>
Bạn có thể thấy vấn đề trong hàm này, bạn không thể trả về 0 nếu so sánh đúng và 1 nếu so sánh sai, vì vậy cần sửa lại hàm này như sau.
<?php function myfunction($v1,$v2) { if ($v1===$v2) { return 0; } if ($v1 > $v2) return 1; return -1; } $a1=array(1, 2, 4); $a2=array(1, 3, 4); print_r(array_uintersect($a1,$a2,"myfunction")); ?>
Hi vọng với bài viết này, bạn đã hiểu rõ cách sử dụng hàm array_uintersect() trong PHP. Nếu thấy bài viết hay và ý nghĩa, hãy like và chia sẻ với bạn bè để mọi người cùng nhau học tập nhé.
Cảm ơn bạn đã ghé thăm codetutam.com
Bình luận: