Как посчитать, сколько дубликатов у массива в Php

0

Я новичок в Php, и сегодня я наткнулся на rand() -function. Я хотел бы заполнить массив номерами, созданными с помощью этой функции, а затем подсчитать количество его дубликатов. Я уже пробовал это в первый раз, но как-то я, кажется, на лесу.

<?php

$numbers = array();


for ($i=0; $i < 100; $i++) { 
    $numbers[$i] = rand(0, 100);
}

//$numbers = array(12,12,12,12);
echo "random numbers generated.<br>";

$arrLength = count($numbers);
$arrWithDoubles = array();

for ($i=0; $i < $arrLength; $i++) {
    //echo "start looping for i: ".$i."! numbers['i'] has the content".$numbers[$i].".<br>"; 
    for ($x=$i; $x < $arrLength; $x++) { 
            //echo "looped for x: ".$x."! numbers['x'] has the content".$numbers[$x].".<br>";
        if($numbers[$i] == $numbers[$x]) {
            if($i != $x) {
                //echo "pushed to 'arrWithDoubles'.<br>";
                array_push($arrWithDoubles, $numbers[$x]);
            }
        }
    }
}

echo "numbers of doubles: ".count($arrWithDoubles)."<br>";
echo "list of numbers which were double:<br>";
for ($i=0; $i < count($arrWithDoubles); $i++) { 
    echo $arrWithDoubles[$i];
    echo "<br>";
}

 ?>
  • 2
    Вы также должны посмотреть в array_count_values
  • 0
    Вы хотите знать, сколько раз конкретное число дублируется, или просто узнать, сколько дубликатов вообще?
Показать ещё 5 комментариев
Теги:
count
random

4 ответа

0
Лучший ответ

Спасибо за все Ваши ответы. При этом я пришел к следующему решению, которое соответствует моему требованию:

<?php

function countValueInArray($value, $array) {
    $count = 0;
    for ($i=0; $i < count($array); $i++) { 
        if($value == $array[$i]) {
            $count++;
        }
    }
    return $count;
}

$numbers = array();

for ($i=0; $i < 100; $i++) { 
    $numbers[$i] = rand(0, 100);
}

$duplicates = array();
for ($x=0; $x < count($numbers); $x++) { 
    $number = countValueInArray($numbers[$x], $numbers);

    if ($number > 1) {
        array_push($duplicates, $numbers[$x]);
    }
}

$duplicatesList = array_values(array_unique($duplicates));

echo "number of duplicates: ".count($duplicatesList);
echo "<br>these are: <br>";

print_r($duplicatesList);

?>

Большое спасибо за вашу помощь!

0

Функция array_unique() удаляет дубликаты из массива, а затем просто добавляет немного математики.

<?php

$numberOfDuplicates = count($orginalArray) - (count($orginalArray) - count(array_unique($originalArray)));

?>
0
$count = array();
foreach ($srcRandom as $sr) {
    if (!array_key_exists ($sr, $count) ) {
        $count[$sr] = 1;
        continue;
    }
    $count[$sr]++;
}
var_dump ($count);
0
$origin = array(2,4,5,4,6,2);
$count_origin = count($origin);
$unique = array_unique($origin);
$count_unique = count($unique);

$duplicates = $count_origin - $count_unique;

echo $duplicates;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню