PHP: marcare gli elementi duplicati in un array

PHP: marcare gli elementi duplicati in un array

In questo articolo vedremo come marcare gli elementi duplicati in un array con PHP.

Possiamo implementare la seguente soluzione:

function remove_duplicates($nums = []) {
    $uniques = [];
    $duplicates = [];
    foreach($nums as $num) {
        if(!in_array($num, $uniques)) {
            $uniques[] = $num;
        } else {
            $duplicates[] = '_';
        }
    }

    return [
        'count' => count($uniques),
        'nums' => array_merge($uniques, $duplicates)
    ];
}

La funzione restituisce il numero complessivo di valori univoci ed un array che pone i valori duplicati contrassegnati dal carattere _ alla fine dell'array. Esempio d'uso:

$tests = [[1, 1, 2], [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]];
foreach($tests as $test) {
    print_r(remove_duplicates($test));
}
Torna su