Cho dù bạn đang kiểm tra sự bằng nhau trên mảng phẳng hay mảng đa chiều [với phím số, phím kết hợp hoặc phím trộn], nếu bạn làm theo những điều này, việc so sánh các mảng trong PHP sẽ khá đơn giản
So sánh các mảng bằng cách sử dụng đẳng thức nghiêm ngặt [$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]];
$b = ['a', 'b', 'c', [ 'foo' => 'bar' ]];
// the above is equivalent to:
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]];
$b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]];
var_dump[$a == $b]; // true
var_dump[$a === $b]; // true
0]
Hai mảng [ví dụ,
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true1 và
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true2] hoàn toàn bằng nhau [i. e.
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true3] khi nào
- chúng có các cặp khóa/giá trị giống nhau;
- khóa/giá trị theo cùng một thứ tự;
- các giá trị là cùng loại
So sánh các mảng bằng cách sử dụng đẳng thức lỏng lẻo [$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]];
$b = ['a', 'b', 'c', [ 'foo' => 'bar' ]];
// the above is equivalent to:
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]];
$b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]];
var_dump[$a == $b]; // true
var_dump[$a === $b]; // true
4]
Hai mảng [ví dụ,
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true1 và
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true2] lỏng lẻo bằng nhau [i. e.
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true7] khi chúng có cùng cặp khóa/giá trị bất kể thứ tự và/hoặc loại của chúng
Việc sử dụng đẳng thức lỏng lẻo thường không được khuyến khích, bạn nên luôn cố gắng sử dụng đẳng thức nghiêm ngặt. Điều này có nghĩa là bạn nên đảm bảo kiểu và thứ tự của các phần tử mảng mà bạn đang so sánh giống nhau
Ví dụ về so sánh mảng
Các ví dụ sau đây cho thấy kết quả so sánh mảng bằng cách sử dụng các đẳng thức nghiêm ngặt và lỏng lẻo
Mảng có các cặp khóa/giá trị giống nhau theo cùng thứ tự với các giá trị cùng loại
$a = ['a', 'b', 'c']; $b = ['a', 'b', 'c']; // the above is equivalent to: $a = ['a', 'b', 'c']; $b = [0 => 'a', 1 => 'b', 2 => 'c']; var_dump[$a == $b]; // true var_dump[$a === $b]; // true
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true
Mảng có các cặp khóa/giá trị giống nhau theo thứ tự với các loại khóa khác nhau
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true0
Từ ví dụ trên, bạn có thể thấy rằng các loại khóa không được so sánh nghiêm ngặt theo một trong hai đẳng thức
Mảng không có cặp khóa/giá trị giống nhau
Trong các ví dụ sau, hai mảng có khóa khác nhau. Do đó, các cặp khóa/giá trị của hai mảng không bằng nhau trong một trong hai phép so sánh bằng
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true1
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true2
Mảng không cùng kiểu
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true3____14
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true5
Thay vì sử dụng đẳng thức lỏng lẻo, bạn có thể sử dụng một trong các hàm sắp xếp mảng [chẳng hạn như
$a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; // the above is equivalent to: $a = ['a', 'b', 'c', [ 'foo' => 'bar' ]]; $b = [0 => 'a', 1 => 'b', 2 => 'c', 3 => [ 'foo' => 'bar' ]]; var_dump[$a == $b]; // true var_dump[$a === $b]; // true00, v.v. ] để sắp xếp cả hai mảng, rồi so sánh chúng với đẳng thức nghiêm ngặt