Mảng PHP duy nhất theo khóa

Bạn không thể quá tải các hàm PHP. Chữ ký hàm chỉ dựa trên tên của chúng và không bao gồm danh sách đối số, vì vậy bạn không thể có hai hàm có cùng tên. Quá tải phương thức lớp trong PHP khác với nhiều ngôn ngữ khác. PHP sử dụng cùng một từ nhưng nó mô tả một mẫu khác

Tuy nhiên, bạn có thể khai báo một hàm biến đổi có số lượng đối số thay đổi. Bạn sẽ sử dụng func_num_args() và func_get_arg() để truyền đối số và sử dụng chúng bình thường

Tiếp tục đọc để tạo một hệ thống kiểm tra danh tính không cho phép nhiều mục nhập mảng dựa trên các giá trị lặp lại

nội dung

PHP array_unique là gì?

Hàm PHP array_unique chấp nhận một mảng, loại bỏ tất cả các giá trị trùng lặp của nó và trả về mảng. Sẽ rất hữu ích nếu bạn lưu ý rằng các khóa của các giá trị duy nhất sẽ được giữ nguyên. Vì vậy, chức năng đã cho dễ sử dụng như giấy lọc tùy chỉnh chỉ cho phép các giá trị duy nhất được tìm thấy đầu tiên đi qua nó.

Bây giờ, hãy xem cú pháp của nó. array_unique(mảng, cờ) . Ở đây, tham số cờ là tùy chọn và giá trị mặc định của nó được đặt thành “SORT_STRING,” có nghĩa là các giá trị mảng sẽ được so sánh dưới dạng chuỗi.

Ngoài ra, bạn có thể sử dụng các cờ sau để tùy chỉnh so sánh

  • SORT_REGULAR. Nó không thay đổi kiểu dữ liệu của các giá trị mảng
  • SORT_NUMERIC. Nó thay đổi các giá trị mảng thành số nguyên trước khi so sánh chúng
  • SORT_LOCALE_STRING. Nó so sánh các giá trị mảng dưới dạng chuỗi theo ngôn ngữ hiện tại

– Ví dụ mã hóa

Ví dụ: giả sử rằng chương trình của bạn chứa một mảng có thể chứa các giá trị trùng lặp. Vì vậy, ở đây bạn sẽ sử dụng hàm duy nhất của mảng để loại bỏ các bản sao khỏi mảng PHP giống như đoạn mã được cung cấp bên dưới


// tạo mảng động vật
$animals = array(“Mèo”,”Chó”,”Hổ”,”Sư tử”,”Mèo”);
// sử dụng hàm PHP array_unique và in mảng duy nhất
print_r(array_unique($animals));
?>

Đầu ra sau đây sẽ được hiển thị trên trình duyệt của bạn

Mảng ( [0] => Mèo [1] => Chó [2] => Hổ [3] => Sư tử )

Array_unique trong PHP. Làm việc với các mảng kết hợp

Chức năng của hàm duy nhất mảng PHP có thay đổi khi bạn sử dụng nó với một mảng kết hợp không?

– Ví dụ mã hóa cho mảng PHP_unique với mảng kết hợp

Ví dụ: bạn có một mảng kết hợp gồm các loại trái cây nhưng có khả năng mảng đó có thể chứa các tên trái cây giống nhau nhiều lần. Vì vậy, trong tình huống này, bạn sẽ sử dụng hàm duy nhất mảng PHP để lấy một mảng các tên trái cây duy nhất

Vui lòng tham khảo đoạn mã ví dụ sau về hàm duy nhất của mảng PHP

?php
// tạo mảng trái cây
$trái cây = mảng(
“Một” => “Xoài”,
“Hai” => “Táo”,
“Ba” => “Dâu tây”,
“Bốn” => “Dứa”,
“Hai” => “Apple”,          // giá trị trùng lặp
“Năm” => “Xoài”,      // giá trị trùng lặp
);
// sử dụng hàm PHP array_unique và in mảng duy nhất
print_r(mảng_unique($trái cây));
?>

Đây là đầu ra mà bạn sẽ nhận được

Mảng ( [Một] => Xoài [Hai] => Táo [Ba] => Dâu [Bốn] => Dứa )

Giá trị duy nhất của mảng PHP. Mảng đa chiều

Hàm duy nhất của mảng PHP có thể giúp xử lý sự trùng lặp trong các mảng nhiều chiều không? . Tạo một hàm do người dùng xác định có thể giúp bạn loại bỏ các mảng trùng lặp khỏi mảng chính dựa trên một khóa cụ thể. Tuy nhiên, hãy nhớ rằng các khóa của mảng ban đầu sẽ không được giữ nguyên

– Ví dụ mã hóa

Ví dụ, có thể xảy ra trường hợp bạn có một mảng nhiều chiều chứa thông tin chi tiết về nhân viên. Bây giờ, bạn muốn xóa toàn bộ mảng bên trong nếu khóa id của nó có giá trị trùng lặp. Vì vậy, bạn sẽ tạo một hàm tùy chỉnh chấp nhận một mảng và một khóa. Hàm tùy chỉnh sử dụng vòng lặp foreachhàm in_array() để .

Bây giờ, hãy xem đoạn mã này sẽ giúp bạn hiểu ví dụ này dễ dàng hơn


// tạo mảng chi tiết nhân viên
$emp = mảng(
mảng(“id” => 1,”Vị trí” => “Người quản lý”,”Ngày” => “01-Tháng 6-2020”),
mảng(“id” => 2,”Vị trí” => “Phụ trách CNTT”, “Ngày” => “02-Tháng 7-2020”),
mảng(“id” => 3,”Chức vụ” => “Kế toán”,”Ngày” => “02-Tháng 7-2020”),
mảng(“id” => 1,”Vị trí” => “Nhân sự”, “Ngày” => “03-Tháng 6-2020”),
);
// tạo một chức năng tùy chỉnh
function multi_unique_array($arr, $key) {
$Myarray = mảng();
$i = 0;
$array_of_keys = mảng();
foreach($arr as $val) {
nếu (. in_array($val[$key], $array_of_keys)) {
$array_of_keys[$i] = $val[$key];
$Myarray[$i] = $val;
}
$i++;
}
trả về $Myarray;
}
// gọi hàm tùy chỉnh với mảng và khóa id
$unique = multi_unique_array($emp,”id”);
// in ra mảng nhiều chiều với id duy nhất
print_r($unique);
?>

Bạn sẽ nhận được kết quả bên dưới sau khi chạy đoạn mã trên

Mảng (
[0] => Mảng ( [id] => 1 [Vị trí] => Người quản lý [Ngày] => 01-Tháng 6-2020 )
[1] => Mảng ( [id] => 2 [Vị trí] => Phụ trách CNTT [Ngày] => 02-Tháng 7-2020 )
[2] => Mảng ( [id] => 3 [Vị trí] => Kế toán [Ngày] => 02-Tháng 7-2020 )
)

- Ghi chú

Không cần thiết phải có một mảng nhiều chiều với các khóa được đặt tên để sử dụng chức năng trên. Bạn có thể chỉ cần chuyển “0” làm đối số thứ hai để xóa tất cả các mảng bên trong chứa ngay cả một giá trị trùng lặp

Mảng PHP Xóa trùng lặp. Chỉ các mảng lặp đi lặp lại

Chắc chắn, các mảng bên trong của một mảng nhiều chiều có thể không chứa tất cả các giá trị trùng lặp. Ngoài ra, có thể xảy ra trường hợp bạn không muốn xóa các mảng bên trong dựa trên một giá trị trùng lặp duy nhất như đã thảo luận trong ví dụ trên

Trong trường hợp đó, bạn có muốn kiểm tra tất cả các giá trị của các mảng bên trong trước khi xóa chúng không?

Vậy thì đừng lo lắng;

– Ví dụ mã hóa

Ví dụ: giả sử bạn có một mảng sinh viên đa chiều, trong đó mỗi mảng bên trong bao gồm hai giá trị đại diện cho id sinh viên và chủ đề. Tại đây, một sinh viên có thể học nhiều môn. Hơn nữa, cùng một chủ đề có thể được lựa chọn bởi các sinh viên khác nhau. Vì vậy, bạn chỉ muốn xóa những mảng bên trong bị trùng lặp hoàn toàn

Vui lòng xem đoạn mã ví dụ được đưa ra bên dưới


$sinh viên = mảng(
mảng(“std1″,”Tiếng Anh”),
mảng(“std1″,”Vật lý”),
mảng(“std2″,”Tiếng Anh”),
mảng(“std2″,”Hóa học”),
mảng(“std2″,”Vật lý”),
mảng(“std3″,”Tiếng Anh”),
mảng(“std2″,”English”), // trùng lặp
mảng(“std3″,”Xã hội học”),
mảng(“std3″,”Sociology”),     // trùng lặp
mảng(“std4″,”Tiếng Anh”),
mảng(“std1″,”Vật lý”), // trùng lặp
mảng(“std4″,”Hóa học”)
);
// tạo một chức năng tùy chỉnh
hàm multi_unique($array) {
$Myarray = mảng();
$array3 = mảng();
foreach($array as $val) {
nếu (. in_array($val, $array3)) {
$array3[] = $val;
$Myarray[] = $val;
}
}
trả về $Myarray;
}
$res = multi_unique($student);
print_r($res);
?>

Đây sẽ là đầu ra hiển thị trên trình duyệt

Mảng (
[0] => Mảng ( [0] => std1 [1] => Tiếng Anh)
[1] => Mảng ( [0] => std1 [1] => Vật lý)
[2] => Mảng ( [0] => std2 [1] => Tiếng Anh)
[3] => Mảng ( [0] => std2 [1] => Hóa học)
[4] => Mảng ( [0] => std2 [1] => Vật lý)
[5] => Mảng ( [0] => std3 [1] => Tiếng Anh)
[6] => Mảng ( [0] => std3 [1] => Xã hội học)
[7] => Mảng ( [0] => std4 [1] => Tiếng Anh)
[8] => Mảng ( [0] => std4 [1] => Hóa học)
)

- Ghi chú

Hàm tùy chỉnh được sử dụng trong đoạn mã trên sẽ không bảo toàn các khóa của mảng ban đầu. Nếu bạn muốn bảo quản các phím thì hãy thử phương pháp sau

Nhận các giá trị duy nhất từ ​​​​mảng. Sử dụng hàm mảng

Mặc dù các hàm do người dùng định nghĩa giúp lấy các giá trị duy nhất từ ​​các mảng nhiều chiều, nhưng việc duy trì các khóa cũng có thể là một nhiệm vụ quan trọng. Do đó, sự kết hợp của các hàm mảng như array_intersect_key, PHP array_unique và array_map có thể giúp giải quyết vấn đề. Tuy nhiên, bạn sẽ không thể xóa các mảng bên trong dựa trên một khóa cụ thể bằng cách sử dụng kết hợp đã nêu

– Ví dụ mã hóa để sử dụng mảng PHP duy nhất với các chức năng khác

Làm việc trên cùng một kịch bản với ví dụ trước, đây là đoạn mã sẽ giúp bạn bảo quản các khóa


$get_unique = array_intersect_key($student , array_unique(array_map(‘serialize’ , $student)));
print_r($get_unique);
?>

Đây sẽ là đầu ra

Mảng (
[0] => Mảng ( [0] => std1 [1] => Tiếng Anh)
[1] => Mảng ( [0] => std1 [1] => Vật lý)
[2] => Mảng ( [0] => std2 [1] => Tiếng Anh)
[3] => Mảng ( [0] => std2 [1] => Hóa học)
[4] => Mảng ( [0] => std2 [1] => Vật lý)
[5] => Mảng ( [0] => std3 [1] => Tiếng Anh)
[7] => Mảng ( [0] => std3 [1] => Xã hội học)
[9] => Mảng ( [0] => std4 [1] => Tiếng Anh)
[11] => Mảng ( [0] => std4 [1] => Hóa học)
)

Phần kết luận

Hàm duy nhất của mảng PHP giúp nhận các giá trị duy nhất từ ​​cả mảng được lập chỉ mục và mảng kết hợp. Ngoài ra, nó hoạt động với các hàm mảng khác để xử lý sự trùng lặp trong mảng nhiều chiều. Mặc dù bạn đã học đủ về cách làm cho mảng trở nên độc đáo, đây là một vài điểm quan trọng để giúp bạn hiểu rõ hơn về chủ đề này

  • Hàm duy nhất của mảng PHP chấp nhận một mảng và loại bỏ tất cả các giá trị trùng lặp khỏi mảng đó trong khi vẫn giữ nguyên các khóa
  • Mảng PHP unique trả về một mảng với các giá trị duy nhất
  • Bạn có thể sử dụng tham số cờ tùy chọn để thay đổi loại giá trị trước khi so sánh chúng
  • Giá trị mặc định cho tham số cờ được đặt thành SORT_STRING
  • Hàm duy nhất mảng PHP không hoạt động với mảng nhiều chiều
  • Bạn có thể tạo một hàm do người dùng xác định để loại bỏ sự trùng lặp khỏi các mảng nhiều chiều dựa trên một khóa cụ thể
  • Một hàm do người dùng định nghĩa có thể giúp lấy các giá trị duy nhất từ ​​các mảng nhiều chiều mà không cần xem xét các khóa
  • Bạn có thể sử dụng hàm mảng duy nhất PHP cùng với các hàm mảng khác để nhận các giá trị duy nhất từ ​​một mảng nhiều chiều trong khi vẫn giữ nguyên các khóa

Mảng PHP duy nhất theo khóa
Thông qua hướng dẫn của chúng tôi, giờ đây, bạn có thể xóa ngay các giá trị trùng lặp khỏi mảng mà không gặp bất kỳ khó khăn nào

5/5 - (21 phiếu)

Mảng PHP duy nhất theo khóa

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 để nhận các giá trị duy nhất trong mảng PHP?

The array_unique() là một hàm tích hợp sẵn trong PHP và hàm này loại bỏ các giá trị trùng lặp khỏi một mảng. Nếu có nhiều phần tử trong mảng có cùng giá trị thì phần tử xuất hiện đầu tiên sẽ được giữ lại và tất cả các lần xuất hiện khác của phần tử này sẽ bị xóa khỏi mảng.

Làm cách nào để nhận các giá trị duy nhất từ ​​hai mảng trong PHP?

Hàm array_diff() so sánh giá trị của hai (hoặc nhiều) mảng và trả về sự khác biệt. 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 không có trong mảng2 hoặc mảng3, v.v.

Làm cách nào để kiểm tra xem một giá trị mảng có tồn tại trong PHP không?

Hàm in_array() là một hàm có sẵn trong PHP dùng để kiểm tra xem một giá trị đã cho có tồn tại trong một mảng hay không. Nó trả về TRUE nếu tìm thấy giá trị đã cho trong mảng đã cho và FALSE nếu không.

Làm cách nào để in các phần tử trùng lặp trong mảng trong PHP?

<. LOẠI TÀI LIỆU html>
//Khởi tạo mảng
$arr = mảng(1, 2, 3, 4, 2, 7, 8, 8, 3);
print("Duplicate elements in given array:
");.
//Tìm kiếm phần tử trùng lặp