php - 在数组中查找非重复元素

标签 php arrays filtering unique

我的数组是:

$array= array(4,3,4,3,1,2,1);


我想将其输出如下:

Output = 2 


(因为2仅出现一次)

这是我尝试过的:

$array = array(4, 3, 4, 3, 1, 2, 1);
$array1 = array(4, 3, 4, 3, 1, 2, 1);
$array_diff = array_diff($array, $array1); 

最佳答案

单线无循环:(Demo

var_export(array_keys(array_intersect(array_count_values($array),[1])));


细目:

array_keys(                          // return the remaining keys from array_count_values 
    array_intersect(                 // filter the first array by second
        array_count_values($array),  // count number of occurrences of each value
        [1]                          // identify the number of occurrences to keep
    )
)


如果您(或任何将来的读者)想要保留更多值,请替换array_intersect()中的第二个参数/数组。
例如:
您想保留1,2和3:array(1,2,3)[1,2,3]

ps。为了便于记录,您可以将array_filter()与自定义函数一起使用,以忽略所有非1计数值,但是我使用了array_intersect(),因为语法更简短并且IMO更易于阅读。



ps。以为我会重新访问并包括PHP7.4技术,并与其他基于函数的技术进行比较...

代码:(Demo

$numbers = [4, 3, 4, 3, 1, 2, 1];
var_export(
    array_keys(
        array_intersect(
            array_count_values($numbers),
            [1]
        )
    )
);

echo "\n---\n";
var_export(
    array_keys(
        array_filter(
            array_count_values($numbers),
            function($count) {
                return $count === 1;
            }
        )
    )
);

echo "\n---\n";
// PHP7.4+
var_export(
    array_keys(
        array_filter(
            array_count_values($numbers),
            fn($count) => $count === 1
        )
    )
);

关于php - 在数组中查找非重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015438/

相关文章:

php - 无法连接到 SMTP 服务器。在 CakePHP 中

php - 自动增量跳过数字?

python - 使用 NumPy 旋转 5D 立方体

python - python (django) 中的垃圾邮件和脏话评论帖子过滤/预防/阻止

php - 使用 PHP 更新 MySQL 数据库

带重音字母的 PHP natsort()

c - 在 C 编程中,for(int i=0; st[i]; i++) 和 for(int i=0; i<st[length of the array];i++) 有什么区别

C 一维数组 - 数组下标的无效类型 'int[int]'

arrays - Ruby/RoR 中多维数组的分组/过滤子数组

audio - 高中心频率的IIR滤波器系数