How do you find the duplicate number on a given integer array in php?

I am working with a one dimensional array in PHP. I would like to detect the presence of duplicate values, then count the number of duplicate values and out put the results. For example, given the following array:

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

I would like to print:

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

Any advice on how to approach this problem?

Thanks.

Mike

SilentGhost

293k64 gold badges301 silver badges291 bronze badges

asked Jul 23, 2009 at 10:11

You can use array_count_values function

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

print_r(array_count_values($array));

will output

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

How do you find the duplicate number on a given integer array in php?

Gagantous

3506 gold badges26 silver badges62 bronze badges

answered Jul 23, 2009 at 10:14

SilfverstromSilfverstrom

27.1k6 gold badges44 silver badges56 bronze badges

1

if(count(array_unique($array))<count($array))
{
    // Array has duplicates
}
else
{
    // Array does not have duplicates
}

2

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

sth

215k50 gold badges273 silver badges363 bronze badges

answered Oct 22, 2009 at 18:50

3

You could try turning that array into a associative array with the fruits as keys and the number of occurrences as values. Bit long-winded, but it looks like:

$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 "<br />";
}

answered Jul 23, 2009 at 10:36

Simon ScarfeSimon Scarfe

9,1404 gold badges27 silver badges32 bronze badges

1

To get rid use array_unique(). To detect if have any use count(array_unique()) and compare to count($array).

How do you find the duplicate number on a given integer array in php?

aksu

5,1815 gold badges23 silver badges39 bronze badges

answered Aug 20, 2009 at 15:04

Stuff them into a map (pseudocode)

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

    $m[$word] += 1;
}

answered Jul 23, 2009 at 10:15

Anton GogolevAnton Gogolev

111k38 gold badges194 silver badges282 bronze badges

Perhaps something like this (untested code but should give you an idea)?

$new = array();

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

Then you'll get a new array with the values as keys and their value is the number of times they existed in the original array.

answered Jul 23, 2009 at 10:17

1

I didn't find the answer I was looking for, so I wrote this function. This will make an array that contains only the duplicates between the two arrays, but not print the number of times an element is duplicated, so it's not directly answering the question, but I'm hoping it'll help someone in my situation.

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:

Array
(
    [0] => 4
    [1] => 5
)

answered Mar 15, 2018 at 20:02

aswineaswine

16011 bronze badges

$data = ['outer', 'inner', 'sole', 'sole', 'outer', 'outer'];

$result = max(array_count_values($data));

if($result > 1) {
  echo 'Duplicate items were found!';
}

I think this way is shorter and cleaner.

answered Sep 10, 2021 at 11:17

How do you find the duplicate number on a given integer array in php?

function array_not_unique(array $array): array
    {
        $duplicate_array = array_diff_key( $array , array_unique( $array ) );
        $unique_array = [];
        foreach ($array as $key => $value) {
            if ( in_array($value, $duplicate_array)) {
                $duplicate_array[$key] = $value;
            }
            else {
                $unique_array[$key] = $value;
            } 

        }

        return ["unique_array" => $unique_array, "duplicate_array" => $duplicate_array];
    }

answered Oct 7, 2021 at 12:02

This function give you the redundant values only

function array_find_redundant($A){
    $U=$N=[];
    foreach($A As $k=>$v){
        if(in_array($v,$U)){$N[$k]=$v;}else{$U[]=$v;}
    }
    return $N;
}

$A = ['A','B','B','C','C','C'];
$B = array_find_redundant($A); // [2=>'B',4=>'C',5=>'C'] 

answered Apr 18 at 8:31

How do you find the duplicate number on a given integer array in php?

SaifSaif

291 silver badge5 bronze badges

$count = 0;
$output ='';
$ischeckedvalueArray = array();
for ($i=0; $i < sizeof($array); $i++) {
    $eachArrayValue = $array[$i];
    if(! in_array($eachArrayValue, $ischeckedvalueArray)) {
        for( $j=$i; $j < sizeof($array); $j++) {
            if ($array[$j] === $eachArrayValue) {
                $count++;
            }
        }
        $ischeckedvalueArray[] = $eachArrayValue;
        $output .= $eachArrayValue. " Repated ". $count."<br/>";
        $count = 0;
    }

}

echo $output;

How do you find the duplicate number on a given integer array in php?

Tunaki

128k45 gold badges322 silver badges405 bronze badges

answered Apr 16, 2016 at 18:47

How do you find the duplicate number on a given integer array in php?

A simple method:

$array = array_values(array_unique($array, SORT_REGULAR));

How do you find the duplicate number on a given integer array in php?

biruk1230

2,8834 gold badges15 silver badges28 bronze badges

answered Jan 28, 2020 at 13:39

1

How do you find the duplicate number on a given integer array?

Algorithm.
Declare and initialize an array..
Duplicate elements can be found using two loops. The outer loop will iterate through the array from 0 to length of the array. The outer loop will select an element. ... .
If a match is found which means the duplicate element is found then, display the element..

How do you check if there is a duplicate number in an array?

function checkIfArrayIsUnique(myArray) { for (var i = 0; i < myArray. length; i++) { for (var j = 0; j < myArray. length; j++) { if (i != j) { if (myArray[i] == myArray[j]) { return true; // means there are duplicate values } } } } return false; // means there are no duplicate values. }

How do you find duplicate numbers in an array if it contains multiple duplicates PHP?

Definition and Usage. The array_unique() function 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.

How do you find duplicate objects in an array?

Using the indexOf() method In this method, what we do is that we compare the index of all the items of an array with the index of the first time that number occurs. If they don't match, that implies that the element is a duplicate. All such elements are returned in a separate array using the filter() method.