Cách kiểm tra cùng một giá trị trong mảng PHP

Trong bài viết này, chúng ta sẽ xem xét các phương pháp khác nhau để tìm các bản sao trong một mảng. Một số phương pháp này chỉ đếm số lượng phần tử trùng lặp trong khi những phương pháp khác cũng cho chúng ta biết phần tử nào đang lặp lại và một số làm cả hai. Theo đó, bạn có thể chọn cái tốt nhất cho trường hợp sử dụng của mình

Mục lục

  • Sử dụng phương thức indexOf()
  • Sử dụng phương thức has()
  • Sử dụng một cặp đối tượng & giá trị khóa
  • Sử dụng chức năng "một số"
  • Sử dụng phép lặp

Sử dụng phương thức indexOf()

Trong phương pháp này, những gì chúng ta làm là so sánh chỉ mục của tất cả các mục của một mảng với chỉ mục của lần đầu tiên số đó xuất hiện. Nếu chúng không khớp, điều đó có nghĩa là phần tử trùng lặp. Tất cả các phần tử như vậy được trả về trong một mảng riêng biệt bằng cách sử dụng phương thức filter()

Chúng ta hãy xem xét việc triển khai điều này bằng JavaScript

const arry = [1, 2, 1, 3, 4, 3, 5];

const toFindDuplicates = arry => arry.filter((item, index) => arr.indexOf(item) !== index)
const duplicateElementa = tofindDuplicates(arry);
console.log(duplicateElements);

// Output: [1, 3]

Sử dụng phương thức has()

Trong cách triển khai ở trên, mảng đầu ra có thể có các phần tử trùng lặp nếu các phần tử đã xuất hiện nhiều hơn hai lần trong một mảng. Để tránh điều này và để chúng tôi đếm số lượng phần tử trùng lặp, chúng tôi có thể sử dụng phương thức use()

function toFindDuplicates(arry) {
    const uniqueElements = new Set(arry);
    const filteredElements = arry.filter(item => {
        if (uniqueElements.has(item)) {
            uniqueElements.delete(item);
        } else {
            return item;
        }
    });

    return [...new Set(uniqueElements)]
}

const arry = [1, 2, 1, 3, 4, 3, 5];
const duplicateElements = toFindDuplicates(arry);
console.log(duplicateElements);

// Output: [1, 3]

Giải pháp trên tìm và trả về các phần tử trùng lặp bằng phương thức has(). Phương pháp này hoạt động hiệu quả hơn phương pháp trước đó vì mỗi giá trị trong Tập hợp phải là duy nhất

Sử dụng đối tượng & cặp khóa-giá trị

Trong JavaScript, một đối tượng bao gồm các cặp khóa-giá trị trong đó các khóa tương tự như các chỉ mục trong một mảng và là duy nhất. Nếu một người cố gắng thêm một khóa trùng lặp với một giá trị khác, thì giá trị trước đó cho khóa đó sẽ bị ghi đè bởi giá trị mới. Chúng tôi sử dụng khái niệm này để so sánh và tìm các bản sao

toFindDuplicates();

function toFindDuplicates() {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let toMap = {};
    let resultToReturn = false;
    for (let i = 0; i < arry.length; i++) {

        if (toMap[arry[i]]) {
            resultToReturn = true;
            // terminate the loop
            break;
        }

        toMap[arr[i]] = true;
    }

    if (resultToReturn) {
        console.log('Duplicate elements exist'
            ');
        }
        else {
            console.log('Duplicates don'
                t exist ');
            }
        }

Điều này có thể được sử dụng khi bạn lo lắng về những yếu tố chính xác nào trùng lặp

Sử dụng chức năng "một số"

Trong JavaScript, hàm “some” kiểm tra một điều kiện trên tất cả các phần tử của một mảng và trả về true nếu bất kỳ phần tử mảng nào thỏa mãn điều kiện đó

Trong hàm gọi lại đối số, chúng ta lấy phần tử mảng hiện tại làm đối số thứ nhất và chỉ mục của phần tử hiện tại làm đối số thứ hai

Sau đó, chúng ta có thể so sánh chỉ mục của phần tử hiện tại với chỉ mục của phần tử đầu tiên có cùng giá trị. Nếu cả hai chỉ số đều giống nhau, điều đó có nghĩa là không có phần tử trùng lặp

toFindDuplicates();

function toFindDuplicates() {
    let arry = [1, 2, 1, 3, 4, 3, 5];
    let resultToReturn = false;
    // call some function with callback function as argument
    resultToReturn = arry.some((element, index) => {
        return arry.indexOf(element) !== index
    });
    if (resultToReturn) {
        console.log('Duplicate elements exist'
            ');
        }
        else {
            console.log('Duplicates don'
                t exist ');
            }
        }

Sử dụng phép lặp

Trong phương pháp này, chúng ta so sánh từng phần tử của mảng với tất cả các phần tử khác của mảng để kiểm tra xem giá trị của hai phần tử có giống nhau hay không bằng cách sử dụng vòng lặp for lồng nhau

Ở đâ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ị

Làm cách nào để kiểm tra xem mảng có chứa cùng giá trị 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 để kiểm tra giá trị trùng lặp trong mảng trong PHP?

Đây là đoạn mã đang hoạt động để kiểm tra xem mảng có giá trị trùng lặp hay không. .
$arr = array('Email','Name','Something','Else','Email');
nếu ( đếm( $arr ). == đếm( array_unique( $arr ) ) ) echo "Một số trùng lặp";