Проверить повторяющиеся значения в массиве


Мой вопрос заключается в следующем:

у Меня есть следующий массив:

$array = array(10, 30, 10, 40, 40);

интересно, есть ли простой способ отобразить сообщение: "есть повторяющиеся значения" или "не есть повторяющиеся значения".

функция array_count_values() мог обрабатывать этот массив вместе с foreach() сравнивая результат результат, пока не найдете большего количества, чем 1. Тем не менее, я хотел бы убежать из этого анализа, потому что, только мне нужно знать, если происходят значения дубликаты, а не каковы эти значения. Кто-то бы еще одна идея?

 5
Author: user3486019, 2014-04-17

2 answers

Удобным способом (но не знаю, думает о производительности) заключается в фильтрации дубликатов, чтобы другой массив, и сравнить с размерами:

$array = array(10, 30, 10, 40, 40);
$copia = array_unique($array);
if(count($copia) != count($array)) {
    echo "existem valores duplicados";
} else {
    echo "não existem valores duplicados";
}

Демо

 8
Author: bfavaretto, 2014-04-17 20:54:50

Для отображения формы с помощью функции native php array_diff_assoc:

<?php
    
    //array
    $arr = array(10, 30, 80, 40, 40);

    //function
    function checkDuplicateElementArray(array $arr){
        $toCompare = array_unique($arr);
        return array_diff_assoc($arr, $toCompare);
    }

    //use
    if(checkDuplicateElementArray($arr)){
        echo "Existem valores duplicados";
    }else{
        echo "Não existem valores duplicados";
    }
 0
Author: Carlos H. Araújo, 2020-12-01 17:23:05