Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

Tôi đang làm việc với một mảng một chiều trong PHP. Tôi muốn phát hiện sự hiện diện của các giá trị trùng lặp, sau đó đếm số lượng các giá trị trùng lặp và đưa ra kết quả. Ví dụ: đưa ra mảng sau:

$array = array('apple', 'orange', 'pear', 'banana', 'apple',
   'pear', 'kiwi', 'kiwi', 'kiwi');

Tôi muốn in:

apple (2)
orange
pear (2)
banana
kiwi (3)

Bất kỳ lời khuyên về cách tiếp cận vấn đề này?

Thanks.

Mike

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

Silentghost

294K64 Huy hiệu vàng301 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges301 silver badges291 bronze badges

hỏi ngày 23 tháng 7 năm 2009 lúc 10:11Jul 23, 2009 at 10:11

Bạn có thể sử dụng chức năng Array_Count_Values

$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');

print_r(array_count_values($array));

sẽ đầu ra

Array
(
   [apple] => 2
   [orange] => 1
   [pear] => 2
   etc...
)

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

Gagantous

3506 Huy hiệu vàng26 Huy hiệu bạc63 Huy hiệu Đồng6 gold badges26 silver badges63 bronze badges

Đã trả lời ngày 23 tháng 7 năm 2009 lúc 10:14Jul 23, 2009 at 10:14

SilfverstromsilfverstromSilfverstrom

Phù hiệu vàng 27.2k644 Huy hiệu bạc56 Huy hiệu đồng6 gold badges44 silver badges56 bronze badges

1

if(count(array_unique($array))

2

function array_not_unique( $a = array() )
{
  return array_diff_key( $a , array_unique( $a ) );
}

STH

Phim thương hiệu vàng 215k5050 gold badges273 silver badges363 bronze badges

Đã trả lời ngày 22 tháng 10 năm 2009 lúc 18:50Oct 22, 2009 at 18:50

3

Bạn có thể thử biến mảng đó thành một mảng kết hợp với các loại trái cây dưới dạng các phím và số lần xuất hiện là giá trị. Một chút dài dòng, nhưng có vẻ như:

$array = array('apple', 'orange', 'pear', 'banana', 'apple',
   'pear', 'kiwi', 'kiwi', 'kiwi');
$new_array = array();
foreach ($array as $key => $value) {
    if(isset($new_array[$value]))
        $new_array[$value] += 1;
    else
        $new_array[$value] = 1;
}
foreach ($new_array as $fruit => $n) {
    echo $fruit;
    if($n > 1)
        echo "($n)";
    echo "
"; }

Đã trả lời ngày 23 tháng 7 năm 2009 lúc 10:36Jul 23, 2009 at 10:36

Khăn quàng cổ SimonSimon Scarfe

9.1404 Huy hiệu vàng27 Huy hiệu bạc32 Huy hiệu Đồng4 gold badges27 silver badges32 bronze badges

1

Để loại bỏ sử dụng

apple (2)
orange
pear (2)
banana
kiwi (3)
6. Để phát hiện nếu có bất kỳ sử dụng
apple (2)
orange
pear (2)
banana
kiwi (3)
7 và so sánh với
apple (2)
orange
pear (2)
banana
kiwi (3)
8.

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

AKSU

5.1815 Huy hiệu vàng23 Huy hiệu bạc39 Huy hiệu Đồng5 gold badges23 silver badges39 bronze badges

Đã trả lời ngày 20 tháng 8 năm 2009 lúc 15:04Aug 20, 2009 at 15:04

Đưa chúng vào

apple (2)
orange
pear (2)
banana
kiwi (3)
9 (mã giả)

map[string -> int] $m
foreach($word in $array)
{
    if(!$m.contains($word))
        $m[$word] = 0;

    $m[$word] += 1;
}

Đã trả lời ngày 23 tháng 7 năm 2009 lúc 10:15Jul 23, 2009 at 10:15

Anton Gogolevanton GogolevAnton Gogolev

111K38 Huy hiệu vàng195 Huy hiệu bạc282 Huy hiệu Đồng38 gold badges195 silver badges282 bronze badges

Có lẽ một cái gì đó như thế này (mã chưa được kiểm tra nhưng nên cho bạn một ý tưởng)?

$new = array();

foreach ($array as $value)
{
    if (isset($new[$value]))
        $new[$value]++;
    else
        $new[$value] = 1;
}

Sau đó, bạn sẽ nhận được một mảng mới với các giá trị dưới dạng các khóa và giá trị của chúng là số lần chúng tồn tại trong mảng gốc.

Đã trả lời ngày 23 tháng 7 năm 2009 lúc 10:17Jul 23, 2009 at 10:17

1

Tôi không tìm thấy câu trả lời mà tôi đang tìm kiếm, vì vậy tôi đã viết chức năng này. Điều này sẽ tạo ra một mảng chỉ chứa các bản sao giữa hai mảng, nhưng không in số lần một yếu tố được nhân đôi, vì vậy nó không trả lời trực tiếp câu hỏi, nhưng tôi hy vọng nó sẽ giúp ai đó trong tình huống của tôi.

function findDuplicates($array1,$array2)
{
    $combined = array_merge($array1,$array2);
    $counted = array_count_values($combined);
    $dupes = [];
    $keys = array_keys($counted);
    foreach ($keys as $key)
    {   
        if ($counted[$key] > 1)
        {$dupes[] = $key;}
    }
    sort($dupes);
    return $dupes;
}
$array1 = [1,2,3,4,5];
$array2 = [4,5,6,7,8];
$dupes = findDuplicates($array1,$array2);
print_r($dupes);

Outputs:

apple (2)
orange
pear (2)
banana
kiwi (3)
0

Đã trả lời ngày 15 tháng 3 năm 2018 lúc 20:02Mar 15, 2018 at 20:02

Aswineaswineaswine

15911 huy hiệu đồng11 bronze badges

apple (2)
orange
pear (2)
banana
kiwi (3)
1

Tôi nghĩ rằng cách này ngắn hơn và sạch hơn.

Đã trả lời ngày 10 tháng 9 năm 2021 lúc 11:17Sep 10, 2021 at 11:17

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

apple (2)
orange
pear (2)
banana
kiwi (3)
2

Đã trả lời ngày 7 tháng 10 năm 2021 lúc 12:02Oct 7, 2021 at 12:02

Hàm này chỉ cung cấp cho bạn các giá trị dự phòng

apple (2)
orange
pear (2)
banana
kiwi (3)
3

Đã trả lời ngày 18 tháng 4 lúc 8:31Apr 18 at 8:31

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

SaifsaifSaif

291 Huy hiệu bạc5 Huy hiệu đồng1 silver badge5 bronze badges

apple (2)
orange
pear (2)
banana
kiwi (3)
4

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

Tunaki

128K45 Huy hiệu vàng322 Huy hiệu bạc406 Huy hiệu Đồng45 gold badges322 silver badges406 bronze badges

Đã trả lời ngày 16 tháng 4 năm 2016 lúc 18:47Apr 16, 2016 at 18:47

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

Một phương pháp đơn giản:

apple (2)
orange
pear (2)
banana
kiwi (3)
5

Hướng dẫn check duplicate value in array php - kiểm tra giá trị trùng lặp trong mảng php

biruk1230

2.9034 Huy hiệu vàng15 Huy hiệu bạc29 Huy hiệu đồng4 gold badges15 silver badges29 bronze badges

Đã trả lời ngày 28 tháng 1 năm 2020 lúc 13:39Jan 28, 2020 at 13:39

1

Làm thế nào để bạn tìm thấy các giá trị trùng lặp trong một mảng?

Algorithm..
Khai báo và khởi tạo một mảng ..
Các yếu tố trùng lặp có thể được tìm thấy bằng hai vòng. Vòng ngoài sẽ lặp qua mảng từ 0 đến chiều dài của mảng. Vòng lặp bên ngoài sẽ chọn một phần tử. ....
Nếu tìm thấy một trận đấu có nghĩa là phần tử trùng lặp được tìm thấy, hãy hiển thị phần tử ..

Làm thế nào để bạn tìm thấy các số trùng lặp trong một mảng nếu nó chứa nhiều bản sao PHP?

Kiểm tra PHP cho các bản sao trong mảng..
hàm has_dupes ($ mảng) {.
$ dupe_array = mảng () ;.
foreach ($ mảng là $ val) {.
if (++ $ dupe_array [$ val]> 1) {.
trả về đúng ;.
trả lại sai ;.

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

Hàm in_array () là một hàm sẵn có trong PHP được sử dụng để kiểm tra xem một giá trị nhất định có tồn tại trong một mảng hay không.Nó trả về đúng nếu giá trị đã cho được tìm thấy trong mảng đã cho và sai.in_array() function is an inbuilt function in PHP that is used to check whether a given value exists in an array or not. It returns TRUE if the given value is found in the given array, and FALSE otherwise.

Array_unique là gì?

Hàm mảng_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, sự xuất hiện đầu tiên sẽ được giữ và giá trị còn lại sẽ được gỡ bỏ.Lưu ý: Mảng trả về sẽ giữ loại khóa của Mảng đầu tiên.removes duplicate values from an array. If two or more array values are the same, the first appearance will be kept and the other will be removed. Note: The returned array will keep the first array item's key type.