valores - php array key value




¿Cómo detectar valores duplicados en PHP array? (7)

No encontré la respuesta que estaba buscando, así que escribí esta función. Esto creará una matriz que contiene solo los duplicados entre las dos matrices, pero no imprime la cantidad de veces que un elemento está duplicado, por lo que no está respondiendo directamente la pregunta, pero espero que ayude a alguien en mi situación.

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);

Productos:

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

Estoy trabajando con una matriz unidimensional en PHP. Me gustaría detectar la presencia de valores duplicados, luego contar el número de valores duplicados y poner los resultados. Por ejemplo, dado el siguiente conjunto:

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

Me gustaría imprimir:

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

¿Algún consejo sobre cómo abordar este problema?

Gracias.

Micro


Para deshacerse, use array_unique() . Para detectar si tiene uso count(array_unique()) y comparar para count($array) .


Puede usar la función array_count_values

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

print_r(array_count_values($array));

saldrá

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

Rellenarlos en un map (pseudocódigo)

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

    $m[$word] += 1;
}

$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;

<?php

$arr = array(1, 2, 3, 2, 5, 6, 7);

print_r(array_count_values($arr));

?>

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




arrays