Code Tu Tam

Hàm array_uintersect trong PHP là gì ?

Rate this post

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

Cú pháp hàm array_uintersect() trong PHP như sau:

array_uintersect ( array $array1 , array $array2 [, array $... ], callable $value_compare_func ) : array

Tham số truyền vào 

Giá trị trả về

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.

Ví dụ minh họa

<?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"));
?>

Kết quả trả về

Array ( [a] => green [b] => brown [0] => red )

Ứng dụng

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"));
?>

Các hàm liên quan

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

Exit mobile version