Hàm array_uintersect trong PHP là gì ?

13/08/2020 - lượt xem
Chia sẻ
 
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 

  • $array1 mảng được truyền vào.
  • $array2 mảng được truyền vào.
  • $value_compare_func là hàm callback.

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

  • Hàm array_intersect() lấy các phần tử giao của 2 mảng .
  • Hàm array_intersect_assoc() lấy các phần tử giao của 2 mảng, có so sánh KEY.
  • Hàm array_uintersect_assoc() lấy các phần tử giao của 2 mảng, có so sánh KEY bằng Callback.
  • Hàm array_uintersect_uassoc() lấy các phần tử giao của 2 mảng, có so sánh KEY VALUE bằng Callback.

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

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm