PHP: trovare il valore univoco in un array

PHP: trovare il valore univoco in un array

In PHP possiamo ottenere l'elemento univoco in un array.

Dato un array di valori non univoci, possiamo restituire solo quel valore che ricorre una sola volta.


function find_occurences($num = 0, $items = []) {
    $count = 0;
    for($i = 0; $i < count($items); $i++) {
        if($items[$i] === $num) {
            $count++;
        }
    }
    return $count;
}

function single_number($nums = []) {
    if(!is_array($nums) || count($nums) === 0) {
        return -1;
    }
    $length = count($nums);
    if($length === 1) {
        return $nums[0];
    }
    $unique_nums = array_unique($nums);
    $unique_map = array_map(function($u) use ($nums) {
        return [$u, find_occurences($u, $nums)];
    }, $unique_nums);
    $result = [];
    foreach($unique_map as $umap) {
        if($umap[1] === 1) {
            $result[] = $umap;
        }
    }
    return $result[0][0];
}

function main() {
    $tests = [[2, 2, 1], [4, 1, 2, 1, 2], [1]];
    foreach($tests as $test) {
        print_r(single_number($test));
    }
}

main();
    
Torna su