Khi làm việc với mảng trong PHP, bạn thường cần so sánh chúng để kiểm tra xem chúng có chứa các phần tử giống nhau hay không. Đẳng thức mảng có thể có nghĩa là những thứ khác nhau, các phần tử giống nhau theo cùng một thứ tự, các phần tử giống nhau bất kể thứ tự hoặc khớp kiểu nghiêm ngặt. Bài viết này khám phá các cách tiếp cận khác nhau để kiểm tra xem hai mảng có bằng nhau trong PHP hay không.
Sử dụng toán tử ==
== toán tử cung cấp sự so sánh lỏng lẻo, kiểm tra xem các mảng có các phần tử giống nhau theo cùng thứ tự mà không cần kiểm tra loại nghiêm ngặt hay không?
<?php
$arr1 = [1, 2, 3, 4];
$arr2 = [1, 2, 3, 4];
if ($arr1 == $arr2) {
echo "The arrays are equal";
} else {
echo "The arrays are not equal";
}
?>
The arrays are equal
Sử dụng toán tử ===
=== toán tử thực hiện so sánh nghiêm ngặt, kiểm tra cả giá trị và kiểu dữ liệu ?
<?php
$array1 = [1, 2, 3, 4];
$array2 = [1, 2, '3', 4];
if ($array1 === $array2) {
echo "The arrays are equal!";
} else {
echo "The arrays are not equal!";
}
?>
The arrays are not equal!
Sử dụng phương thức array_diff()
array_diff() hàm so sánh các mảng và trả về sự khác biệt. Để so sánh không có thứ tự, hãy kiểm tra xem có sự khác biệt ở cả hai hướng không?
<?php
$array1 = [1, 2, 3];
$array2 = [3, 2, 1];
if (empty(array_diff($array1, $array2)) && empty(array_diff($array2, $array1))) {
echo "Arrays are equal";
} else {
echo "Arrays are not equal";
}
?>
Arrays are equal
Phương pháp sắp xếp để so sánh không có thứ tự
Khi thứ tự không quan trọng, hãy sắp xếp cả hai mảng trước, sau đó so sánh bằng == ?
<?php
$array1 = [3, 2, 1];
$array2 = [1, 2, 3];
// Sort both arrays
sort($array1);
sort($array2);
// Compare sorted arrays
if ($array1 == $array2) {
echo "The arrays are equal";
} else {
echo "The arrays are not equal";
}
?>
The arrays are equal
Tóm tắt so sánh
== LooseYesSame order, hỗn hợp các loại=== Kết quả trùng khớp StrictYesExactarray_diff() LooseNoUnorderedSortSort + == LooseNoKhông có thứ tự, mảng đơn giản Kết luận
Chọn === vì sự bình đẳng tuyệt đối, == để so sánh lỏng lẻo với thứ tự và array_diff() hoặc phương pháp sắp xếp để so sánh không có thứ tự. Mỗi phương pháp phục vụ các yêu cầu so sánh khác nhau dựa trên nhu cầu cụ thể của bạn.