1. Hàm array_diff() trong PHP

Hàm array_diff() trong PHP sẽ so sánh sự khác nhau giữa hai hay nhiều mảng trong PHP và trả về sự khác biệt. Nó sẽ lấy ra những phần tử có keyvalue mà trong đó value sẽ chỉ xuất hiện ở mảng đầu tiên mà không có ở những mảng sau. Hàm sẽ trả về phần tử có trong mảng đầu tiên mà không có trong mảng thứ hai hay thứ ba hay các mảng tiếp theo. Các key sẽ được giữ nguyên. 

2. Cú pháp hàm array_diff() trong PHP

Cú pháp của hàm array_diff() trong PHP là: 

array_diff(array1, array2, array3, ...)

Trong đó:

  • array1 : Bắt buộc. Là mảng nguồn để mảng khác so sánh với
  • array2 : Bắt buộc. Mảng để được so sánh với mảng nguồn
  • array3 : Tùy ý. Một mảng để được so sánh với mảng nguồn

Hàm array_diff() có giá trị truyền vào lần lượt là các mảng tương ứng. Và giá trị trị trả về là một mảng mà value đó chỉ xuất hiện ở mảng số 1 và không tồn tại ở các mảng còn lại. Nhưng giá trị khác nhau ở mảng số 2 so với mảng số 1 sẽ không được trả về.

Hàm này cũng sẽ chỉ kiểm tra một chiều của mảng n chiều khi ta sử dụng cú pháp này. Đương nhiên ta cũng có thể kiểm tra mảng sâu hơn bằng cách sử dụng cú pháp:

array_diff($array1[0], $array2[0]);

Ví dụ:

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_diff($a1,$a2);
var_dump($result);
?>

Kết quả

array(1) { ["d"]=> string(6) "yellow" }

Ở đây ta đã dùng hàm array_diff() để so sánh 2 mảng là $a1$a2 . Giá trị trả về là một mảng $result chính là sự khác nhau giữa 2 mảng $a1$a2 .

3. Ví dụ về hàm array_diff() trong PHP

Ví dụ 1: so sánh giá trị của ba mảng và trả về sự khác biệt giữa ba mảng này

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"black","g"=>"purple");
$a3=array("a"=>"red","b"=>"black","h"=>"yellow");

$result=array_diff($a1,$a2,$a3);
echo '<pre>';
var_dump($result);
?>

Kết quả

array(2) {
  ["b"]=>
  string(5) "green"
  ["c"]=>
  string(4) "blue"
}

Ví dụ 2: so sánh giá trị của 2 mảng

<?php
   $input_array1 = array("orange", "banana", "apple");
   $input_array2 = array("orange", "mango", "apple");

   print_r(array_diff($input_array1, $input_array2));
?>

Kết quả

Array ( [1] => banana )