Hà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 ) : arrayHà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: