Khác mảng PHP

Bạn có một cặp mảng và bạn muốn tìm hợp của chúng (tất cả các phần tử), giao điểm (các phần tử trong cả hai, không chỉ một) hoặc hiệu (trong một chứ không phải cả hai)

Để tính toán công đoàn

$union = array_unique(array_merge($a, $b));

Để tính giao lộ

$intersection = array_intersect($a, $b);

Để tìm sự khác biệt đơn giản

$difference = array_diff($a, $b);

Và đối với sự khác biệt đối xứng

$difference = array_merge(array_diff($a, $b), array_diff($b, $a));

Nhiều thành phần cần thiết cho các tính toán này được tích hợp sẵn trong PHP, vấn đề chỉ là kết hợp chúng theo trình tự thích hợp

Để tìm sự kết hợp, bạn hợp nhất hai mảng để tạo một mảng khổng lồ với tất cả các giá trị. Tuy nhiên,

$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
9 cho phép các giá trị trùng lặp khi hợp nhất hai mảng số, vì vậy bạn gọi
$intersection = array_intersect($a, $b);
0 để lọc chúng ra. Điều này có thể để lại khoảng cách giữa các mục vì
$intersection = array_intersect($a, $b);
0 không thu gọn mảng. Tuy nhiên, đó không phải là vấn đề vì
$intersection = array_intersect($a, $b);
2 và
$intersection = array_intersect($a, $b);
3 xử lý các mảng được điền thưa thớt mà không gặp trở ngại nào

Hàm tính giao lộ có tên đơn giản là

$intersection = array_intersect($a, $b);
4 và bạn không cần thực hiện thêm thao tác nào

Hàm

$intersection = array_intersect($a, $b);
5 trả về một mảng chứa tất cả các phần tử duy nhất trong
$intersection = array_intersect($a, $b);
6 không có trong
$intersection = array_intersect($a, $b);
7. Đây được gọi là sự khác biệt đơn giản

$intersection = array_intersect($a, $b);
2

Mảng kết quả,

$intersection = array_intersect($a, $b);
8 chứa
$intersection = array_intersect($a, $b);
9 và
$difference = array_diff($a, $b);
0, vì
$intersection = array_intersect($a, $b);
5 phân biệt chữ hoa chữ thường. Nó không chứa
$difference = array_diff($a, $b);
2 vì nó không xuất hiện trong
$intersection = array_intersect($a, $b);
6

Để có được sự khác biệt ngược lại, hay nói cách khác, để tìm các yếu tố duy nhất trong

$intersection = array_intersect($a, $b);
7 mà không có trong
$intersection = array_intersect($a, $b);
6, hãy đảo ngược các đối số

$difference = array_diff($a, $b);
1

Mảng

$difference = array_diff($a, $b);
6 chỉ chứa
$difference = array_diff($a, $b);
2

Nếu bạn muốn áp dụng một chức năng hoặc bộ lọc khác cho

$intersection = array_intersect($a, $b);
5, hãy sử dụng thuật toán tìm khác biệt của riêng bạn

$difference = array_diff($a, $b);
5

$intersection = array_intersect($a, $b);
2 đầu tiên xây dựng bảng tra cứu mảng kết hợp. Sau đó, bạn lặp qua
$intersection = array_intersect($a, $b);
6 và nếu bạn không thể tìm thấy mục nhập nào trong phần tra cứu của chúng tôi, hãy thêm phần tử đó vào
$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
1

Có thể nhanh hơn một chút khi kết hợp

$intersection = array_intersect($a, $b);
5 với
$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
3

$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
1

Sự khác biệt đối xứng là những gì ở trong

$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
4, nhưng không phải ở
$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
5, và những gì ở trong
$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
5, nhưng không phải ở
$difference = array_merge(array_diff($a, $b), array_diff($b, $a));
4

$difference = array_merge(array_diff($a, $b), array_diff($b, $a));

Khi đã nêu, thuật toán rất đơn giản. Bạn gọi

$intersection = array_intersect($a, $b);
5 hai lần và tìm thấy hai sự khác biệt. Sau đó, bạn hợp nhất chúng lại với nhau thành một mảng. Không cần gọi
$intersection = array_intersect($a, $b);
0, vì bạn đã cố tình xây dựng các mảng này không có điểm chung nào

Hãy tiếp tục đọc bài viết này vì nó rất tuyệt để tìm hiểu về các chức năng liên quan đến việc tìm kiếm sự khác biệt của mảng và bạn có thể bắt đầu cuộc hành trình bằng cách đọc thêm

nội dung

  • Array_diff PHP là gì?
    • – Mã ví dụ 1. Cách sử dụng Array_diff PHP
    • – Mã Ví dụ 2. Array_diff PHP
  • Cơ chế của sự khác biệt mảng
    • – Cú pháp, Giá trị tham số và Kiểu trả về
    • – Những lưu ý quan trọng cần xem xét
  • Hàm Array_diff_assoc()
    • – Cú pháp, Giá trị tham số và Kiểu trả về
    • – Mã Ví dụ 1. Cách sử dụng Hàm Array_diff_assoc()
    • – Mã Ví dụ 2. Hàm Array_diff_assoc()
  • Hàm Array_diff_key()
    • – Hàm Array_diff_key(). Cú pháp, giá trị tham số và kiểu trả về
  • Hàm Array_intersect()
    • – Cú pháp, Giá trị tham số và Kiểu trả về
  • Phần kết luận

Array_diff PHP là gì?

Array_diff PHP là một hàm trong cơ chế chênh lệch mảng và việc sử dụng nó dẫn đến việc so sánh các phần tử giữa hai hoặc nhiều mảng và đưa ra kết quả về sự khác biệt của chúng

Việc triển khai so sánh các mảng đầu vào và trả về một mảng mới. Mảng mới này chứa các phần tử có trong mảng đầu vào đầu tiên và không có trong các phần tử khác

– Mã ví dụ 1. Cách sử dụng Array_diff PHP

Ví dụ đầu tiên về cách sử dụng hàm Array_diff php bao gồm cách nó có thể được sử dụng để so sánh các phần tử từ hai mảng và trả về sự khác biệt có liên quan. Việc triển khai cơ chế so sánh hai mảng PHP này bắt đầu bằng cách xác định các phần tử của mảng thứ nhất và thứ hai tương ứng

Theo như đã cho, hàm array_diff được sử dụng để có thể khai báo một mảng mới làm đầu ra. Cuối cùng, câu lệnh print_r được sử dụng để hiển thị mảng mới chứa các phần tử đầu ra sau khi so sánh

$a1 = mảng (“m” => “Thứ Hai”, “t” => “Thứ Ba”, “w” => “Thứ Tư”, “
$a1 = array (“m” => “Monday”, “t” => “Tuesday”, “w” => “Wednesday”, “c” => “Thursday”);
$a2 = array (“f” => “Monday”, “s” => “Wednesday”, “b” => “Thursday”);
$output = array_diff ($a1 , $a2);
print_r ($output);
?>

Đầu ra của việc thực hiện này là

Mảng
(
[t] => Thứ Ba
)

– Mã Ví dụ 2. Array_diff PHP

Cách sử dụng ví dụ thứ hai cho thấy cách sử dụng hàm array_diff để so sánh các phần tử của nhiều mảng. Trong ví dụ này, các phần tử của ba mảng cụ thể được so sánh để trả về chênh lệch mảng có liên quan

Việc triển khai bắt đầu bằng cách khai báo các mảng đó với các phần tử của chúng và sau đó sử dụng hàm array_diff khai báo một mảng mới cho đầu ra. Tiếp theo là câu lệnh print_r mà mảng mới được hiển thị với các phần tử đầu ra sau khi so sánh

$a1 = mảng (“a” => “Thứ Hai”, “b” => “Thứ Ba”, “c” => “Thứ Năm”, “
$a1 = array (“a” => “Monday” , “b” => “Tuesday” , “c” => “Thursday” , “d” => “Saturday”);
$a2 = array (“e” => “Monday” , “f” => “Wednesday” , “g” => “Friday”);
$a3 = array (“a” => “Monday” , “b” => “Wednesday” , “h” => “Saturday”);
$output = array_diff ($a1 , $a2 , $a3);
print_r ($output);
?>

Đầu ra của việc thực hiện này là

Mảng '
(
[b] => Thứ Ba
[c] => Thứ Năm
)

Cơ chế của sự khác biệt mảng

Một sự khác biệt mảng PHP là một cơ chế so sánh các phần tử giữa các mảng. Bằng cách này, nó tìm ra cái nào trong số chúng có hoặc không có trong mảng đầu vào. Đầu ra của cơ chế chênh lệch mảng hiển thị các phần tử không có trong các mảng nhất định trong số các mảng được so sánh

– Cú pháp, Giá trị tham số và Kiểu trả về

Cú pháp của hàm array_diff là array_diff(array1, array2, array3, …, arrayn) cho thấy nó có thể chấp nhận bất kỳ số lượng mảng nào tùy theo yêu cầu của tác vụ. Là một hàm sẵn có, nó chấp nhận hai mảng đầu vào làm giá trị tham số bắt buộc

Các phần tử được so sánh từ mảng đầu tiên với mảng thứ hai trong khi các mảng khác cũng có thể được chấp nhận. Các mảng này cũng được chấp nhận làm giá trị tham số tùy chọn cho các phần tử được so sánh với chúng.

Sự khác biệt mảng được hiển thị bằng cách sử dụng hàm array_diff dựa trên các giá trị của các phần tử đầu vào. Kiểu trả về của phần triển khai của nó là một mảng đầu ra trong đó các phần tử dựa trên sự so sánh và khác biệt. Cơ chế này so sánh mảng đầu tiên với các mảng khác để dẫn đến kiểu trả về

– Những lưu ý quan trọng cần xem xét

Có một số điều quan trọng cần xem xét khi sử dụng hàm array_diff trong cơ chế so sánh mảng PHP. Một trong số chúng bao gồm việc so sánh các phần tử trong biểu diễn chuỗi, nghĩa là 1 và '1' sẽ được coi là bằng nhau đối với hàm array_diff làm ví dụ. Hơn nữa, việc triển khai nó không phụ thuộc vào số lượng phần tử giống nhau trong mảng đầu vào đầu tiên

Điều đó có nghĩa là, ví dụ, một phần tử có thể xuất hiện ba lần trong mảng đầu vào đầu tiên và chỉ một lần trong các mảng khác. Điều này sẽ dẫn đến một đầu ra sẽ bỏ qua tất cả ba lần xuất hiện của phần tử đó. Ngoài ra, việc tìm kiếm sự khác biệt của mảng trong mảng nhiều chiều liên quan đến việc so sánh riêng biệt từng kích thước được bao gồm

Hàm Array_diff_assoc()

Array_diff_assoc() là một hàm sẵn có khác liên quan đến cơ chế so sánh các phần tử để tìm ra sự khác biệt của mảng và hoạt động của nó khác với hoạt động của hàm array_diff. Hàm này lấy sự khác biệt giữa các mảng bằng cách so sánh các giá trị cũng như khóa của chúng trong khi hàm array_diff chỉ sử dụng các giá trị để so sánh. Đầu ra của hàm array_diff_assoc() dựa trên các giá trị và khóa được so sánh để hiển thị các phần tử có trong mảng đầu vào đầu tiên và không có trong các phần tử khác

– Cú pháp, Giá trị tham số và Kiểu trả về

Cú pháp của hàm array_diff_assoc() là array_diff_assoc(array1, array2, array3, …, arrayn) cho thấy rằng nó cũng có thể chấp nhận bất kỳ số lượng mảng nào dựa trên yêu cầu của tác vụ. Mảng thứ nhất và thứ hai được bao gồm trong các giá trị tham số được chấp nhận là bắt buộc trong khi các mảng còn lại được chấp nhận là giá trị tham số tùy chọn giống như hàm array_diff

Hơn nữa, kiểu trả về của hàm array_diff_assoc() cũng giống như kiểu trả về của hàm array_diff. Đó là một mảng mới chứa các phần tử có trong mảng đầu vào đầu tiên và không có trong các phần tử khác sau khi so sánh các giá trị và khóa của chúng

– Mã Ví dụ 1. Cách sử dụng Hàm Array_diff_assoc()

Ví dụ về cách sử dụng hàm array_diff_assoc() này cũng bao gồm việc so sánh hai và ba mảng để tìm ra sự khác biệt giữa các mảng. Ví dụ đầu tiên này so sánh cả giá trị và khóa của cùng hai mảng đã được bao gồm trước đó trong ví dụ về hàm array_diff. Việc triển khai giống như của hàm array_diff và bắt đầu bằng cách xác định các mảng với các phần tử của chúng. Sau đó, hàm array_diff_assoc() và câu lệnh print_r được sử dụng để khai báo và hiển thị một mảng mới sau khi so sánh

$a1 = mảng (“m” => “Thứ Hai”, “t” => “Thứ Ba”, “w” => “Thứ Tư”, “
$a1 = array (“m” => “Monday”, “t” => “Tuesday”, “w” => “Wednesday”, “c” => “Thursday”);
$a2 = array (“f” => “Monday”, “s” => “Wednesday”, “b” => “Thursday”);
$output = array_diff_assoc ($a1 , $a2);
print_r ($output);
?>

Đầu ra của việc thực hiện này là

Mảng
([m] => Thứ Hai
[t] => Thứ Ba
[w] => Wednesday
[c] => Thursday
)

– Mã Ví dụ 2. Hàm Array_diff_assoc()

Cách sử dụng ví dụ thứ hai này xem xét việc so sánh các khóa và giá trị giữa ba mảng giống nhau trước đây được bao gồm trong ví dụ về hàm array_diff

Cách thực hiện gần giống với việc thay thế hàm array_diff bằng array_diff_assoc() để khai báo một mảng mới. Ba mảng đầu vào được xác định và câu lệnh print_r được sử dụng giống như cách của hàm array_diff

$a1 = mảng (“a” => “Thứ Hai”, “b” => “Thứ Ba”, “c” => “Thứ Năm”, “
$a1 = array (“a” => “Monday” , “b” => “Tuesday” , “c” => “Thursday” , “d” => “Saturday”);
$a2 = array (“e” => “Monday” , “f” => “Wednesday” , “g” => “Friday”);
$a3 = array (“a” => “Monday” , “b” => “Wednesday” , “h” => “Saturday”);
$output = array_diff_assoc ($a1 , $a2 , $a3);
print_r ($output);
?>

Đầu ra của việc thực hiện này là

Mảng
(
[b] => Thứ Ba
[c] => Thứ Năm
[d] => Saturday
)

Hàm Array_diff_key()

PHP array_diff_key cũng là một hàm sẵn có liên quan đến việc tìm ra sự khác biệt giữa các mảng bằng cách so sánh các phần tử của chúng. Nó chỉ so sánh các khóa của các phần tử, đó là lý do tại sao hoạt động của nó khác với hoạt động của các hàm array_diff và array_diff_assoc. Bằng cách này, nó so sánh phần tử nào có trong mảng đầu tiên và phần tử nào không có trong mảng khác

– Hàm Array_diff_key(). Cú pháp, giá trị tham số và kiểu trả về

Cú pháp của hàm array_diff_key() là array_diff_key(array1, array2, array3, …, arrayn). Do đó, giống như các chức năng trước đó, nó cũng có thể chấp nhận bất kỳ số lượng mảng nào. Kiểu trả về của hàm array_diff_key() cũng là một mảng mới chứa các phần tử sau khi chỉ so sánh các khóa của chúng

Hàm Array_intersect()

Cơ chế của hàm array_intersect() có thể coi là ngược lại với cơ chế của hàm array_diff. Là một hàm sẵn có, PHP array_intersect được sử dụng để tìm các giao điểm thay vì sự khác biệt giữa các mảng. Cơ chế so sánh các giá trị của các mảng đầu vào và xuất ra mảng PHP khớp giữa chúng

– Cú pháp, Giá trị tham số và Kiểu trả về

Cú pháp của hàm array_intersect() là array_intersect(array1, array2, …, arrayn). Nó cho thấy rằng hàm chấp nhận tối thiểu hai mảng làm giá trị tham số để so sánh các giá trị giữa chúng

Kiểu trả về của hàm array_intersect() là một mảng mới chứa các phần tử có trong tất cả các mảng đầu vào. Các mảng đầu vào không có phần tử phù hợp dẫn đến NULL làm kiểu trả về

Phần kết luận

Bài viết này đã đánh giá rất cao cơ chế chênh lệch mảng nhắm mục tiêu toàn diện các hàm array_diff, array_diff_assoc và array_diff_key. Đây là bản sửa đổi những điểm quan trọng đã được đề cập

  • Cơ chế chênh lệch mảng so sánh các phần tử và tìm ra phần tử nào có và không có giữa các mảng
  • Hàm array_diff tìm các giá trị có trong mảng đầu vào đầu tiên và không có ở các mảng khác
  • Hàm array_diff_assoc so sánh cả khóa và giá trị của các mảng đầu vào để hiển thị một đầu ra khác với hàm array_diff
  • Hoạt động của hàm array_diff_key cũng khác vì nó chỉ so sánh các khóa của các mảng đầu vào
  • Hàm array_intersect() ngược lại với các hàm trước đó vì nó tìm thấy giao điểm của các mảng và kết quả khớp giữa chúng

Khác mảng PHP
Bạn luôn có thể được hỗ trợ với bài viết này bất cứ khi nào bạn phải tìm sự khác biệt về mảng trong PHP

5/5 - (20 phiếu bầu)

  • Tác giả
  • Bài viết gần đây

Khác mảng PHP

Vị trí là tất cả

Vị trí là tất cả. Tài nguyên Go-To của bạn để Tìm hiểu & Xây dựng. CSS, JavaScript, HTML, PHP, C++ và MYSQL

Làm cách nào để trừ các giá trị mảng trong PHP?

Ví dụ ¶

Làm cách nào để khớp hai mảng trong PHP?

Hàm array_intersect() so sánh giá trị của hai (hoặc nhiều) mảng và trả về kết quả khớp. Hàm này so sánh các giá trị của hai hoặc nhiều mảng và trả về một mảng chứa các mục từ mảng1 có trong mảng2, mảng3, v.v.

Làm cách nào để kiểm tra các giá trị mảng giống nhau trong PHP?

Bây giờ, để kiểm tra xem hai mảng có bằng nhau hay không, có thể thực hiện phép lặp trên các mảng và kiểm tra xem đối với mỗi chỉ mục, giá trị được liên kết với chỉ mục trong cả hai mảng . PHP có một toán tử mảng sẵn có (===) để kiểm tra tương tự nhưng ở đây thứ tự của các phần tử mảng không quan trọng. . PHP has an inbuilt array operator( === ) to check the same but here the order of array elements is not important.

Mảng PHP có thể có các kiểu dữ liệu khác nhau không?

Theo hướng dẫn sử dụng PHP bạn thực sự có thể lưu trữ các loại không đồng nhất bên trong một "mảng" PHP - cuộn xuống ví dụ 3. Lưu ý rằng mặc dù ví dụ nói về các khóa là số nguyên hoặc chuỗi, nhưng các giá trị được gán trong ví dụ cũng là cả số nguyên và chuỗi, chứng tỏ rằng có thể lưu trữ các loại không đồng nhất.