Làm cách nào để tìm các khóa trùng lặp trong một mảng trong PHP?

Ở đây chúng ta sẽ học cách lọc các giá trị trùng lặp bằng cách lưu trữ các phần tử mảng đã cho dưới dạng khóa mà không cần sử dụng hàm sẵn có của PHP. Hãy tìm hiểu cách thực hiện với mã ví dụ sau

$givenArray = array[2,5,2,10,4,5,8,16];

$uniqueArry = array[];
 
foreach[$givenArray as $val] { 
    
   $uniqueArry[$val] = $val;
   
}
print_r[$uniqueArry];

đầu ra

Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]

giải thích mã

  • Lặp qua một mảng các phần tử đã cho có chứa các giá trị trùng lặp
  • Khai báo duy nhấtArry
  • Duyệt mảng bằng vòng lặp for. Trong quá trình lặp qua các phần tử mảng, giá trị của phần tử hiện tại được gán cho khóa & giá trị cho mảng mới được xác định là uniqueArry
  • Không cho phép lưu key trùng lặp trong mảng giúp tránh hiện tượng xuất hiện nhiều phần tử và chỉ giữ lại một giá trị
Trong hướng dẫn này, bạn có thể tìm hiểu Cách loại bỏ và cách lấy các giá trị trùng lặp khỏi mảng và Cách đặt lại khóa mảng trong PHP

Xóa các giá trị trùng lặp khỏi mảng

Để xóa các giá trị trùng lặp khỏi một mảng, hãy sử dụng hàm PHP. mảng_unique[]. Hàm này trả về một mảng mới loại bỏ các giá trị trùng lặp mà không thay đổi khóa của các phần tử còn lại.
Ví dụ.
 1 [1] => abc [3] => mp [4] => 33 [6] => 8 ]
?>

array_unique[] coi các giá trị là chuỗi, vì vậy, nếu mảng chứa chẳng hạn. 12 [số nguyên] và '12' [chuỗi], hàm chỉ giữ giá trị đầu tiên.
Ví dụ.
 12 [1] => abc [3] => mp [4] => 33 ]
?>

Nhận các phần tử mảng trùng lặp

Nếu bạn chỉ muốn lấy các phần tử trùng lặp từ một mảng, bạn có thể sử dụng cấu trúc sau.
array_unique[array_diff_assoc[$aray, array_unique[$aray]]];
Ví dụ.
 12 [5] => mp ]
?>
PHP không có chức năng đặc biệt để đặt lại các phím mảng, nhưng nó có thể được sử dụng một chức năng khác để có được kết quả này.
Để đặt lại [hoặc đánh số lại] các khóa của một mảng, bạn có thể sử dụng array_merge[]. Hàm này hợp nhất các phần tử của một hoặc nhiều mảng lại với nhau. Trong mảng kết quả, các phím số sẽ được đánh số lại, bắt đầu từ số 0.
Vì vậy, nếu bạn chỉ thêm một mảng có các phím số không theo thứ tự, thì nó sẽ trả về một mảng có các phím số được sắp xếp theo thứ tự, bắt đầu từ 0, với các giá trị theo cùng thứ tự.
Ví dụ.
'abc', 5=>23, 12=>'mp'];
$aray = array_merge[$aray];

// test
print_r[$aray];      // Array [ [0] => abc [1] => 23 [2] => mp ]
?>

Nếu nhiều phần tử trong khai báo mảng sử dụng cùng một khóa thì chỉ phần tử cuối cùng sẽ được sử dụng và tất cả các phần tử khác sẽ bị ghi đè

Chặn kiểm tra trong trình chỉnh sửa

  1. Định vị dấu mũ tại dòng được đánh dấu và nhấn Alt+Enter hoặc nhấp

  2. Nhấp vào mũi tên bên cạnh kiểm tra mà bạn muốn chặn và chọn hành động chặn cần thiết

    ________số 8

    Code :
    My array is like this,

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    0

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    1

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    2

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    3

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    4

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    5

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    6

    như bạn có thể thấy có các khóa trùng lặp. Tất cả các phím là chuỗi. Mảng nằm trong một tệp và được tạo thủ công. Nó có gần 1000 mục với nhiều khóa trùng lặp

    Làm cách nào để biết khóa nào trùng lặp?

    Kết quả tôi muốn nhận là một danh sách các khóa có bản sao

    key1, key2, ...
    

    để tôi có thể vào tệp và sửa các khóa đó để làm cho chúng trở nên độc nhất. Định dạng nào cũng được, chỉ để tôi biết tên của các khóa đó

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    7 không trùng lặp nên không sao

    Mọi sự trợ giúp sẽ rất được trân trọng

    Cảm ơn

    Hầu hết các bạn dường như đang nói với tôi điều tương tự. ] Tôi biết tôi không thể có nhiều khóa. Vấn đề là đây là một mảng từ điển được tạo thủ công trong một tệp phẳng. Người tạo ra nó đã thêm các khóa giống nhau nhiều lần. Vấn đề là

    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    8 trên một trang có bản dịch
    Array [ [2] => 2 [5] => 5 [10] => 10 [4] => 4 [8] => 8 [16] => 16 ]
    
    9 nhưng trên trang khác, nó phải có bản dịch
     1 [1] => abc [3] => mp [4] => 33 [6] => 8 ]
    ?>
    
    0, nhưng vì cả hai giá trị đều có cùng một khóa trong mảng từ điển của tôi nên cả hai đều hiển thị cùng một giá trị

    Làm cách nào để kiểm tra khóa trùng lặp trong PHP?

    chức năng checkIfArrayIsUnique[myArray] { for [var i = 0; i < myArray. chiều dài; . chiều dài; . }

    Làm cách nào để kiểm tra các bản sao trong mảng PHP?

    Hàm array_unique[] loại bỏ các giá trị trùng lặp khỏi một mảng . Nếu hai hoặc nhiều giá trị mảng giống nhau, thì giá trị đầu tiên sẽ được giữ lại và giá trị còn lại sẽ bị xóa. Ghi chú. Mảng được trả về sẽ giữ loại khóa của mục mảng đầu tiên.

    Một mảng PHP có thể có các khóa trùng lặp không?

    Kiểm tra mã. Nhân đôi khóa mảng . Nếu nhiều phần tử trong khai báo mảng sử dụng cùng một khóa thì chỉ phần tử cuối cùng sẽ được sử dụng và tất cả các phần tử khác sẽ bị ghi đè. Reports duplicate keys in array declarations. If multiple elements in the array declaration use the same key, only the last one will be used, and all others will be overwritten.

    Làm cách nào để so sánh hai giá trị khóa mảng trong PHP?

    Hàm array_diff_assoc[] so sánh các khóa và 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 khóa và 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.

Chủ Đề